Parametreli filtreleri ile birleştirme yayını için bir Snapshot oluştur
Parametreli filtreleri ile birleştirme yayını anlık görüntü oluşturma yöntemi açıklanmıştır SQL Server 2012kullanarak SQL Server Management Studio, Transact-SQL, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo).
Bu Konuda
Başlamadan Önce
Öneriler
Kullanarak parametreli filtreleri ile birleştirme yayını anlık görüntü oluşturmak için:
SQL Server Management Studio
Transact-SQL
Çoğaltma Yönetimi Nesneleri'ni (rmo)
Başlamadan Önce
Öneriler
Parametreli filtreleri kullanarak birleştirme yayını anlık görüntü oluştururken, öncelikle tüm yayımlanmış veri ve abonelik abone meta verileri içeren standart (şema) anlık oluşturmalıdır. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula. Şema anlık görüntüsünü oluşturduktan sonra abone özel bölüm yayımlanmış veri içeren anlık görüntü oluşturabilirsiniz.
Yayının bir veya daha fazla makaleler için süzme her abonelik için benzersiz olmayan örtüşen bölümleri verir, meta veriler temizlenir her Birleştirme Aracısı çalıştırır. Yani bölümlenmiş anlık daha hızlı bir şekilde sona eriyor. Bu seçeneği kullanırken, anlık görüntü oluşturma ve teslim başlatmak aboneleri izin düşünmelisiniz. Filtreleme seçenekleri hakkında daha fazla bilgi için bkz: "'bölümü seçeneklerini'" bölümünde Anlık görüntüler için birleştirme yayınları ile parametreli süzgeçleri.
[Top]
SQL Server Management Studio Kullanarak
Bölümler için anlık görüntülerini oluşturmak Veri bölümleri sayfası Yayını özellikleri - <yayın > iletişim kutusu. Bu iletişim kutusuna erişme hakkında daha fazla bilgi için bkz: Yayın özelliklerini görüntüleme ve değiştirme. Anlık görüntüler oluşturmak anlık görüntü oluşturma ve teslim başlatmak aboneleri izin verebilirsiniz.
Anlık görüntüler için bir veya daha fazla bölümleri oluşturmadan önce şunları yapmalısınız:
Yeni Yayın Sihirbazı ile birleştirme yayını oluşturmak ve üzerinde bir veya daha çok Parametreli satır filtreleri belirtmek Filtre Ekle Sihirbazı sayfasında. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir.
Yayını şema anlık oluşturur. Varsayılan olarak, şema anlık oluşturulur, yeni yayın sihirbazını tamamlamak; Ayrıca bir şema anlık üretebilirsiniz SQL Server Management Studio.
Bir şema anlık görüntüsü oluşturmak için
Yayımcı bağlanmak Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından yayınları klasörü.
Bir anlık görüntü oluşturmak ve ardından istediğiniz yayını sağ tıklatın Görünüm Snapshot Aracısı durum.
İçinde Görünüm Snapshot Aracısı durum - <yayın > iletişim kutusu'yı Start.
Snapshot aracı anlık görüntüsü oluşturuluyor tamamlandığında "[% 100] a snapshot of 17 article (s) oluşturuldu."gibi bir mesaj, görüntülenir
Anlık görüntü oluşturma ve teslim başlatmak aboneleri izin vermek için
Tarih Veri bölümleri sayfası Yayını özellikleri - <yayın > Seç iletişim kutusunda otomatik olarak bir bölüm tanımlamak ve, gerekli çalıştığında yeni abone eşitlemek anlık oluşturmak.
Tamam’ı tıklatın.
Oluşturma ve anlık görüntüleri yenilemek için
Tarih Veri bölümleri sayfası Yayını özellikleri - <yayın > iletişim kutusu'yı Ekle.
Bir değer girin host_name() ve/veya suser_sname() bir anlık görüntüsünü oluşturmak istediğiniz bölüm ile ilişkili değer.
İsteğe bağlı olarak anlık yenilemek için bir zamanlama belirtin:
Seçin Aşağıdaki saatler çalıştırmak bu bölüm için anlık görüntü Aracısı zamanlama
Anlık görüntüleri yenilemek için varsayılan zamanlamayı kabul edin veya tıklatın değişikliği farklı bir zamanlama belirtmek için.
Tıklayın Tamam, hangi olanak verir Yayını özellikleri - <yayın > iletişim kutusu.
Özellik kılavuzunda bir bölüm seçmek ve sonra tıklatın Seçili anlık görüntüleri şimdi oluştur.
Tamam’ı tıklatın.
[Top]
Transact-SQL'i Kullanma
Saklı yordamlar ve Snapshot aracı kullanarak aşağıdakileri gerçekleştirebilirsiniz:
Abonelerin isteği anlık görüntüsü oluşturma ve uygulama ilk kez bunlar eşitlemek için izin verir.
Her bölüm için anlık görüntüleri önceden.
El ile anlık her abone için oluşturur.
Güvenlik Notu Mümkün olduğunda, zamanında güvenlik kimlik bilgilerini girmesini ister. Bir komut dosyasında kimlik bilgileri saklamanız gerekir, yetkisiz erişimi önlemek için dosyayı güvenli gerekir.
Anlık görüntü oluşturma ve teslim başlatmak aboneleri izin veren bir yayın oluşturmak için
Yayını veritabanı üzerinde Yayımcı tarafında idam veyasp_addmergepublication (Transact-sql). Aşağıdaki parametreleri belirtme:
Yayın adı @ yayın.
Değeri trueiçin @ allow_subscriber_initiated_snapshot, anlık görüntü işlemini başlatmak aboneleri sağlar.
(İsteğe bağlı) Aynı anda çalıştırmak dinamik anlık görüntü işlem sayısını @ max_concurrent_dynamic_snapshots. En fazla işlem sayısını çalışıyor ve bir abone bir anlık görüntü oluşturmak çalışır, işlem sıraya yerleştirilir. Varsayılan olarak eşzamanlı işlemler sayısı için sınır yoktur.
Yayımcı tarafında idam sp_addpublication_snapshot (Transact-sql). Adım 1 için kullanılan yayın adı belirtmek @ yayın ve Microsofthangi Windows kimlik bilgilerini Çoğaltma Anlık görüntü Aracısıiçin çalışan @ job_login ve @ parola. Aracı kullanıyorsa, SQL Serveryayımcı bağlanırken kimlik doğrulamasını da değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve Microsoft SQL Servergiriş bilgilerini @ publisher_login ve publisher_password @. Bu bir anlık görüntü Aracısı iş yayını oluşturur. Bir başlangıç anlık görüntüsü oluşturma ve anlık görüntü Aracısı için özel bir zamanlama tanımlama hakkında daha fazla bilgi için bkz: Oluşturun ve başlangıç anlık görüntüsü Uygula.
Güvenlik Notu Bir Publisher ile sağlanan tüm parametreler için değerler uzak bir dağıtımcı yapılandırma dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
İdam yürütmesp_addmergearticle (Transact-sql)makaleleri yayına eklemek için. Bu saklı yordam, yayındaki her makale için bir kez çalıştırılmalıdır. Parametreli filtreleri kullanırken Parametreli satır filtre kullanarak bir veya daha fazla makaleleri belirtmelisiniz @ subset_filterclause parametresi. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir.
Diğer makaleler Parametreli satır filtre göre filtre uygulanır, idam sp_addmergefilter (Transact-sql)üyelik ya da makaleleri arasında mantıksal kaydı ilişkileri tanımlamak için. Bu saklı yordam, bir kez tanımlanan her ilişki için yürütülmelidir. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir.
Birleştirme Aracısı abone başlatılamıyor anlık istediğinde istekte bulunan abonelik bölüm anlık otomatik olarak oluşturulur.
Bir yayın oluşturmak ve önceden veya anlık görüntüleri otomatik olarak yenilemek için
İdam veyasp_addmergepublication (Transact-sql)bir yayın oluşturmak için. Daha fazla bilgi için, bkz. Yayın oluşturma.
Yayımcı tarafında idam sp_addpublication_snapshot (Transact-sql). Adım 1 için kullanılan yayın adı belirtmek @ yayın ve anlık görüntü Aracısı çalıştığı için Windows kimlik bilgileri @ job_login ve @ parola. Aracı kullanıyorsa, SQL Serveryayımcı bağlanırken kimlik doğrulamasını da değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve SQL Serveriçin oturum açma bilgilerini @ publisher_login ve publisher_password @. Bu bir anlık görüntü Aracısı iş yayını oluşturur. Bir başlangıç anlık görüntüsü oluşturma ve anlık görüntü Aracısı için özel bir zamanlama tanımlama hakkında daha fazla bilgi için bkz: Oluşturun ve başlangıç anlık görüntüsü Uygula.
Güvenlik Notu Bir Publisher ile sağlanan tüm parametreler için değerler uzak bir dağıtımcı yapılandırma dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
İdam yürütmesp_addmergearticle (Transact-sql)makaleleri yayına eklemek için. Bu saklı yordam, yayındaki her makale için bir kez çalıştırılmalıdır. Parametreli filtreleri kullanırken, bir makale kullanarak Parametreli satır filtre belirtmelisiniz @ subset_filterclause parametresi. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir.
Diğer makaleler Parametreli satır filtre göre filtre uygulanır, idam sp_addmergefilter (Transact-sql)üyelik ya da makaleleri arasında mantıksal kaydı ilişkileri tanımlamak için. Bu saklı yordam, bir kez tanımlanan her ilişki için yürütülmelidir. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir.
Yayını veritabanı üzerinde Yayımcı tarafında idam eşdeğerdirsp_helpmergepublication (Transact-sql), değerini belirtme @ yayın adım 1'den. Not değeri snapshot_jobid sonucu ayarlayın.
Değeri dönüştürmek snapshot_jobid adım 5'te elde edilen benzersiztanıtıcı.
Üzerinde yayımcı msdb veritabanı, idam sp_start_job (Transact-sql), adım 6 için elde dönüştürülmüş değeri belirtme @ iş_no.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addmergepartition (Transact-sql). İçin adım 1 yayından adını belirtmek @ yayın ve bölüm tanımlamak için kullanılan değer @ suser_sname , suser_sname (Transact-sql)filtre yan tümcesi ya da @ host_name , col_name (Transact-sql)filtre yan tümcesi kullanılır.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_adddynamicsnapshot_job (Transact-sql). İçin adım 1 yayından adını belirtmek @ yayın, değeri @ suser_sname veya @ host_name dan adım 8 ve iş için bir zamanlama. Bu, belirtilen bölüm Parametreli anlık oluşturur işi oluşturur. Daha fazla bilgi için, bkz. Eşitleme çizelgelerini belirleme.
[!NOT]
Bu iş adım 2'de tanımlanan anlık görüntüsünü ilk iş olarak aynı Windows hesabını kullanarak çalışır. Parametreli anlık iş ve onun ilişkili veri bölümü kaldırmak için idam eşdeğerdirsp_dropdynamicsnapshot_job (Transact-sql).
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_helpmergepartition (Transact-sql), değerini belirtme @ yayın adım 1 ve değeri @ suser_sname veya @ host_name adım 8'den. Not değeri dynamic_snapshot_jobid sonucu ayarlayın.
At dağıtımcı üzerinde msdb veritabanı, idam sp_start_job (Transact-sql), adım 9 alınan değeri belirtme @ iş_no. Bu bölüm Parametreli anlık görüntü işlemini başlatır.
Her abonelik için bölümlenmiş anlık görüntü oluşturmak için 8-11 adımları yineleyin.
Bir yayın oluşturmak ve her bölüm için anlık görüntüleri el ile oluşturmak için
İdam veyasp_addmergepublication (Transact-sql)bir yayın oluşturmak için. Daha fazla bilgi için, bkz. Yayın oluşturma.
Yayımcı tarafında idam sp_addpublication_snapshot (Transact-sql). Adım 1 için kullanılan yayın adı belirtmek @ yayın ve anlık görüntü Aracısı çalıştığı için Windows kimlik bilgileri @ job_login ve @ parola. Aracı kullanıyorsa, SQL Serveryayımcı bağlanırken kimlik doğrulamasını da değeri belirtmeniz gerekir 0 için @ publisher_security_mode ve SQL Serveriçin oturum açma bilgilerini @ publisher_login ve publisher_password @. Bu bir anlık görüntü Aracısı iş yayını oluşturur. Bir başlangıç anlık görüntüsü oluşturma ve anlık görüntü Aracısı için özel bir zamanlama tanımlama hakkında daha fazla bilgi için bkz: Oluşturun ve başlangıç anlık görüntüsü Uygula.
Güvenlik Notu Bir Publisher ile sağlanan tüm parametreler için değerler uzak bir dağıtımcı yapılandırma dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
İdam yürütmesp_addmergearticle (Transact-sql)makaleleri yayına eklemek için. Bu saklı yordam, yayındaki her makale için bir kez çalıştırılmalıdır. Parametreli filtreleri kullanırken en az bir makale kullanarak Parametreli satır filtre belirtmelisiniz @ subset_filterclause parametresi. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir.
Diğer makaleler Parametreli satır filtre göre filtre uygulanır, idam sp_addmergefilter (Transact-sql)üyelik ya da makaleleri arasında mantıksal kaydı ilişkileri tanımlamak için. Bu saklı yordam, bir kez tanımlanan her ilişki için yürütülmelidir. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir.
Anlık görüntü işlemini başlatmak veya standart anlık şema ve diğer dosyaları oluşturmak için komut isteminden çoğaltma Snapshot aracı çalıştırın. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.
Çoğaltma Anlık görüntü Aracısı yeniden bölümlenmiş anlık konumunu belirten toplu kopyalama (.bcp) dosyaları oluşturmak için komut isteminden çalıştırın - DynamicSnapshotLocation ve birini veya her ikisini de bölüm tanımlar aşağıdaki özellikleri:
-DynamicFilterHostName -değeri ise col_name (Transact-sql)kullanılır.
-DynamicFilterLogin -değeri ise suser_sname (Transact-sql)kullanılır.
Adım 6 her abonelik için bölümlenmiş anlık görüntü oluşturmak için yineleyin.
Aşağıdaki özellikleri belirleme abonelerin, ilk bölümlenmiş anlık uygulamak için abonelik birleştirme aracı her çalıştırın:
-Hostname -host_name gerçek değerini geçersiz kılınmış bölüm tanımlamak için kullanılan değer.
-DynamicSnapshotLocation -Bu bölüm için dinamik anlık görüntü konumu.
[!NOT]
Çoğaltma aracıları programlama hakkında daha fazla bilgi için bkz: Çoğaltma aracısı Yürütülebilirler kavramları.
Örnekler (Transact-SQL)
Bu örnek, nerede abonelerine anlık görüntü oluşturma işlemi başlatmak parametreli filtreleri ile birleştirme yayını oluşturur. İçin değer @ job_login ve @ job_password komut dosyası değişkenleri kullanarak iletilir.
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2012];
-- Enable AdventureWorks2012 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication with Subscriber requested snapshot
-- and using the default agent schedule.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2012.',
@allow_subscriber_initiated_snapshot = N'true',
@publication_compatibility_level = N'90RTM';
-- Create a new snapshot job for the publication, using the default schedule.
-- Pass credentials at runtime using sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(login),
@job_password = $(password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains salesperson information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
-- Start the agent job to generate the full snapshot for the publication.
-- The filtered data snapshot is generated automatically the first time
-- the subscription is synchronized.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
Bu örnek, her abone yürüterek tanımlanan bölümünü bulunduğu parametreli filtre kullanarak bir yayın oluşturur sp_addmergepartition ve yürütme tarafından oluşturulan süzülmüş anlık iş sp_adddynamicsnapshot_job bölümleme bilgileri geçirmeden. İçin değer @ job_login ve @ job_password komut dosyası değişkenleri kullanarak iletilir.
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2012];
-- Enable AdventureWorks2012 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2012.',
@allow_subscriber_initiated_snapshot = N'false';
-- Create a new snapshot job for the publication, using the
-- default schedule. Pass credentials at runtime using
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(Login),
@job_password = $(password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains customer information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
-- Start the snapshot agent job.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
PRINT '*** Waiting for the initial snapshot.';
GO
-- Create a temporary table to store the filtered data snapshot
-- job information.
CREATE TABLE #temp (id int,
job_name sysname,
job_id uniqueidentifier,
dynamic_filter_login sysname NULL,
dynamic_filter_hostname sysname NULL,
dynamic_snapshot_location nvarchar(255),
frequency_type int,
frequency_interval int,
frequency_subday_type int,
frequency_subday_interval int,
frequency_relative_interval int,
frequency_recurrence_factor int,
active_start_date int,
active_end_date int,
active_start_time int,
active_end_time int
)
-- Create each snapshot for a partition
-- The initial snapshot must already be generated.
DECLARE @publication AS sysname;
DECLARE @jobname AS sysname
DECLARE @hostname AS sysname
SET @publication = N'AdvWorksSalesPersonMerge';
SET @hostname = N'adventure-works\Fernando';
WHILE NOT EXISTS(SELECT * FROM sysmergepublications
WHERE [name] = @publication
AND snapshot_ready = 1)
BEGIN
WAITFOR DELAY '00:00:05'
END
-- Create a data partition by overriding HOST_NAME().
EXEC sp_addmergepartition
@publication = @publication,
@host_name = @hostname;
-- Create the filtered data snapshot job, and use the returned
-- information to start the job.
EXEC sp_adddynamicsnapshot_job
@publication = @publication,
@host_name = @hostname;
INSERT INTO #temp (id, job_name, job_id, dynamic_filter_login,
dynamic_filter_hostname, dynamic_snapshot_location,
frequency_type, frequency_interval, frequency_subday_type,
frequency_subday_interval, frequency_relative_interval,
frequency_recurrence_factor, active_start_date, active_end_date,
active_start_time,active_end_time)
EXEC sp_helpdynamicsnapshot_job;
SELECT @jobname = (SELECT DISTINCT job_name FROM #temp WHERE dynamic_filter_hostname = @hostname);
EXEC msdb..sp_start_job @job_name = @jobname;
DROP TABLE #temp;
GO
Bu örnek, her abone kendi veri bölümü ve bölümleme bilgileri sağlayarak oluşturulan süzülmüş anlık iş yeri olmalıdır parametreli filtre kullanarak bir yayın oluşturur. Bir abone, el ile çoğaltma aracıları çalıştıran komut satırı parametreleri kullanarak bölümleme bilgileri sağlar. Bu örnek, bir abonelik yayınına da oluşturuldu varsayar.
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2012];
-- Enable AdventureWorks2012 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2012.',
@allow_subscriber_initiated_snapshot = N'false';
-- Create a new snapshot job for the publication, using the
-- default schedule. Pass credentials at runtime using
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(Login),
@job_password = $(Password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains customer information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
REM Line breaks are added to improve readability.
REM In a batch file, commands must be made in a single line.
REM Run the Snapshot agent from the command line to generate the standard snapshot
REM schema and other files.
SET DistPub=%computername%
SET PubDB=AdventureWorks2012
SET PubName=AdvWorksSalesPersonMerge
"C:\Program Files\Microsoft SQL Server\110\COM\SNAPSHOT.EXE" -Publication %PubName%
-Publisher %DistPub% -Distributor %DistPub% -PublisherDB %PubDB% -ReplicationType 2
-OutputVerboseLevel 1 -DistributorSecurityMode 1
PAUSE
REM Run the Snapshot agent from the command line, this time to generate
REM the bulk copy (.bcp) data for each Subscriber partition.
SET DistPub=%computername%
SET PubDB=AdventureWorks2012
SET PubName=AdvWorksSalesPersonMerge
SET SnapshotDir=\\%DistPub%\repldata\unc\fernando
MD %SnapshotDir%
"C:\Program Files\Microsoft SQL Server\110\COM\SNAPSHOT.EXE" -Publication %PubName%
-Publisher %DistPub% -Distributor %DistPub% -PublisherDB %PubDB% -ReplicationType 2
-OutputVerboseLevel 1 -DistributorSecurityMode 1 -DynamicFilterHostName "adventure-works\Fernando"
-DynamicSnapshotLocation %SnapshotDir%
PAUSE
REM Run the Merge Agent for each subscription to apply the partitioned
REM snapshot for each Subscriber.
SET Publisher = %computername%
SET Subscriber = %computername%
SET PubDB = AdventureWorks2012
SET SubDB = AdventureWorks2012Replica
SET PubName = AdvWorksSalesPersonMerge
SET SnapshotDir=\\%DistPub%\repldata\unc\fernando
"C:\Program Files\Microsoft SQL Server\110\COM\REPLMERG.EXE" -Publisher %Publisher%
-Subscriber %Subscriber% -Distributor %Publisher% -PublisherDB %PubDB%
-SubscriberDB %SubDB% -Publication %PubName% -PublisherSecurityMode 1 -OutputVerboseLevel 3
-Output -SubscriberSecurityMode 1 -SubscriptionType 3 -DistributorSecurityMode 1
-Hostname "adventure-works\Fernando" -DynamicSnapshotLocation %SnapshotDir%
PAUSE
[Top]
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak
Çoğaltma Yönetimi Nesneleri'ni (rmo), bölümlenmiş anlık program aracılığıyla aşağıdaki yollarla oluşturmak için kullanabilirsiniz:
Abonelerin isteği anlık görüntüsü oluşturma ve uygulama ilk kez bunlar eşitlemek için izin verir.
Her bölüm için anlık görüntüleri önceden.
El ile anlık her abone için Snapshot aracı çalıştırarak oluşturur.
[!NOT]
Ne zaman bir makale için süzme örtüşmeyen bölümleri, verir her abonelik için benzersiz (değeri belirterek NonOverlappingSingleSubscriptioniçin PartitionOptionbir birleştirme makale oluştururken), meta verileri temizlenen her Birleştirme Aracısı çalıştırır. Yani bölümlenmiş anlık daha hızlı bir şekilde sona eriyor. Bu seçeneği kullandığınızda, abonelerin isteği anlık görüntüsü oluşturma izin düşünmelisiniz. Daha fazla bilgi için konusuna uygun filtreleme seçenekleri kullanma bölümüne bakın Parametreli satır süzgeçleri.
Güvenlik Notu |
---|
Mümkün olduğunda, zamanında güvenlik kimlik bilgilerini girmesini ister. Kimlik bilgileri saklamanız gerekir kullanın Şifreleme Hizmetleri tarafından sağlanan MicrosoftWindows.net Framework. |
Anlık görüntü oluşturma ve teslim başlatmak aboneleri izin veren bir yayın oluşturmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini ReplicationDatabasesınıfı için yayın veritabanı, set ConnectionContextözelliği örneği ServerConnectionAdım 1 ve arama LoadPropertiesyöntemi. Eğer LoadPropertiesdöner false, veritabanında varolduğunu onaylayın.
Eğer EnabledMergePublishingözelliği false, ayarlamak trueve CommitPropertyChanges.
Örneğini MergePublicationsınıf ve bu nesne için aşağıdaki özellikleri ayarlayın:
ServerConnectionİçin adım 1'de belirtilen ConnectionContext.
Yayımlanmış bir veritabanı için adı DatabaseName.
Yayın için bir ad Name.
Çalıştırmak için dinamik anlık görüntü işi sayısı üst sınırı MaxConcurrentDynamicSnapshots. Çünkü abone başlatılan anlık istekler oluşabilir herhangi bir zamanda, bu özellik birden çok aboneleri aynı zamanda onların bölümlenmiş anlık istediğinde, aynı anda çalıştırabilen anlık görüntü Aracısı işleri sayısını sınırlar. İşleri sayısını çalıştırırken, bir çalışan işleri tamamlanana kadar ek bölümlenmiş anlık istekler sıraya alınmış.
Kullanım bit düzeyinde mantıksal or ()| Visual C# ve OrVisual Basic) değeri eklemek için operatör AllowSubscriberInitiatedSnapshotiçin Attributes.
LoginVe Passwordalanlar SnapshotGenerationAgentProcessSecurityiçin kimlik bilgileri sağlamak için Microsoftanlık görüntü Aracısı iş altında çalıştığı hesabı Windows.
[!NOT]
Ayar SnapshotGenerationAgentProcessSecuritybir üyesi tarafından yayın oluşturulduğunda önerilen sysadminsunucu rolü. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
Arama Createyayın oluşturma yöntemi.
Güvenlik Notu Bir Publisher ile sağlanan tüm özellikler, değerler uzak bir dağıtımcı yapılandırma dahil SnapshotGenerationAgentProcessSecurity, dağıtımcı düz metin olarak gönderilir. Yayımcı ve uzak dağıtımcı önce arama arasındaki bağlantıyı şifrelemek Createyöntemi. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Kullanım MergeArticlemakaleleri yayına eklemek üzere özellik. Belirtmek FilterClauseen az bir makale tanımlar parametreli filtre özelliği. (İsteğe bağlı) Oluşturma MergeJoinFiltertanımlayan nesneleri birleştirme filtreleri makaleleri arasında. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Eğer değeri SnapshotAgentExistsolan falsenolu CreateSnapshotAgentBu yayının ilk anlık görüntü Aracısı işi oluşturmak için.
Arama StartSnapshotGenerationAgentJobyöntemi MergePublicationadımda oluşturulan nesne. Bu ilk anlık oluşturur Aracısı işi başlatır. Bir başlangıç anlık görüntüsü oluşturma ve anlık görüntü Aracısı için özel bir zamanlama tanımlama hakkında daha fazla bilgi için bkz: Oluşturun ve başlangıç anlık görüntüsü Uygula.
(İsteğe bağlı) Kontrol için değeri trueiçin SnapshotAvailableanlık görüntüsünü ilk kullanım için hazır olduğunda belirlemek için özellik.
Bölümlenmiş anlık görüntü, Birleştirme Aracısı abone için ilk kez bağlandığında, otomatik olarak oluşturulur.
Bir yayın oluşturmak ve pregenerate veya anlık görüntüleri otomatik olarak yenilemek için
Bir örneğini kullanın MergePublicationbirleştirme yayını tanımlamak için sınıf. Daha fazla bilgi için, bkz. Yayın oluşturma.
Kullanım MergeArticlemakaleleri yayına eklemek üzere özellik. Belirtmek FilterClauseparametreli filtre tanımlar ve herhangi oluşturmak en az bir makale özelliği MergeJoinFiltertanımlayan nesneleri birleştirme filtreleri makaleleri arasında. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Eğer değeri SnapshotAgentExistsolan falsenolu CreateSnapshotAgentBu yayın anlık görüntü Aracısı işi oluşturmak için.
Arama StartSnapshotGenerationAgentJobyöntemi MergePublicationadımda oluşturulan nesne. Bu yöntem, ilk anlık oluşturur Aracısı işi başlatır. Bir başlangıç anlık görüntüsü oluşturma ve anlık görüntü Aracısı için özel bir zamanlama tanımlama hakkında daha fazla bilgi için bkz: Oluşturun ve başlangıç anlık görüntüsü Uygula.
Kontrol için değeri trueiçin SnapshotAvailableanlık görüntüsünü ilk kullanım için hazır olduğunda belirlemek için özellik.
Örneğini MergePartitionsınıf ve biri veya her ikisi de aşağıdaki özellikleri kullanarak abone parametreli filtre uygulama ölçütlerini ayarlayın:
Abonenin bölüm sonucu tanımlanır, suser_sname (Transact-sql)kullanmak DynamicFilterLogin.
Abonenin bölüm sonucu tanımlanır, col_name (Transact-sql)ya da bu işlevin kullanımı bir aşırı DynamicFilterHostName.
Örneğini MergeDynamicSnapshotJobsınıf ve adım 6 de aynı özelliği ayarlayın.
Kullanım ReplicationAgentSchedulefiltre uygulanmış anlık görüntü için abone bölüm oluşturmak için bir zamanlama tanımlamak için sınıf.
Örneğini kullanarak MergePublicationAdım 1, çağrı AddMergePartition. Geçmek MergePartitionnesne adım 6.
Örneğini kullanarak MergePublicationAdım 1, çağrı AddMergeDynamicSnapshotJobyöntemi. Geçmek MergeDynamicSnapshotJobAdım 7 nesneden ve ReplicationAgentScheduleAdım 8'den nesneden.
Arama EnumMergeDynamicSnapshotJobsve MergeDynamicSnapshotJobnesne döndürülen dizi yeni eklenen bölümlenmiş anlık iş.
Al Nameözelliği işlemin.
Dağıtımcı bir bağlantı kullanarak oluşturmak ServerConnectionsınıf
SQL Server Management Objects (smo) örneği oluşturmak Serversınıf geçme, ServerConnectionnesne adım 13.
Örneğini Jobsınıf geçme, JobServerözelliği Servernesneyi adım 14 ve iş adı adım 12.
Arama Startbölümlenmiş anlık iş başlatma yöntemi.
Adım 6-16 her abone için yineleyin.
Bir yayın oluşturmak ve her bölüm için anlık görüntüleri el ile oluşturmak için
Bir örneğini kullanın MergePublicationbirleştirme yayını tanımlamak için sınıf. Daha fazla bilgi için, bkz. Yayın oluşturma.
Kullanım MergeArticlemakaleleri yayına belirtme ekleme özelliği FilterClauseparametreli filtre tanımlar ve herhangi oluşturmak en az bir makale özelliği MergeJoinFiltertanımlayan nesneleri birleştirme filtreleri makaleleri arasında. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Ilk anlık görüntüsünü oluşturur. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.
Örneğini SnapshotGenerationAgentsınıf ve aşağıdaki gerekli özellikleri ayarlayın:
Publisher-Yayımcı adı
PublisherDatabase-yayını veritabanının adı
Publication-yayının adı
Distributor-Dağıtımcı adı
PublisherSecurityMode-değeri Integratediçin kullanılan Windows tümleşik kimlik doğrulaması veya değeri StandardSQL Server kimlik doğrulaması kullanmak için.
DistributorSecurityMode-değeri Integratediçin kullanılan Windows tümleşik kimlik doğrulaması veya değeri StandardSQL Server kimlik doğrulaması kullanmak için.
Ayarlayın Mergeiçin ReplicationType.
Bir veya daha bölümleme parametreleri tanımlamak için aşağıdaki özelliklerini ayarlayın:
Abonenin bölüm sonucu tanımlanır, suser_sname (Transact-sql)kullanmak DynamicFilterLogin.
Abonenin bölüm sonucu tanımlanır, col_name (Transact-sql)ya da bu işlevin kullanımı bir aşırı DynamicFilterHostName.
Arama GenerateSnapshotyöntemi.
Adım 4-7 her abone için yineleyin.
Örnekler (rmo)
Bu örnek, istenen anlık görüntü üretimi için aboneler verir birleştirme yayınına oluşturur.
// Set the Publisher, publication database, and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
ReplicationDatabase publicationDb;
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Enable the database for merge publication.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
if (publicationDb.LoadProperties())
{
if (!publicationDb.EnabledMergePublishing)
{
publicationDb.EnabledMergePublishing = true;
}
}
else
{
// Do something here if the database does not exist.
throw new ApplicationException(String.Format(
"The {0} database does not exist on {1}.",
publicationDb, publisherName));
}
// Set the required properties for the merge publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// Enable precomputed partitions.
publication.PartitionGroupsOption = PartitionGroupsOption.True;
// Specify the Windows account under which the Snapshot Agent job runs.
// This account will be used for the local connection to the
// Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin;
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword;
// Explicitly set the security mode for the Publisher connection
// Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = true;
// Enable Subscribers to request snapshot generation and filtering.
publication.Attributes |= PublicationAttributes.AllowSubscriberInitiatedSnapshot;
publication.Attributes |= PublicationAttributes.DynamicFilters;
// Enable pull and push subscriptions.
publication.Attributes |= PublicationAttributes.AllowPull;
publication.Attributes |= PublicationAttributes.AllowPush;
if (!publication.IsExistingObject)
{
// Create the merge publication.
publication.Create();
// Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent();
}
else
{
throw new ApplicationException(String.Format(
"The {0} publication already exists.", publicationName));
}
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"The publication {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim publicationDb As ReplicationDatabase
Dim publication As MergePublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Enable the database for merge publication.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
If publicationDb.LoadProperties() Then
If Not publicationDb.EnabledMergePublishing Then
publicationDb.EnabledMergePublishing = True
End If
Else
' Do something here if the database does not exist.
Throw New ApplicationException(String.Format( _
"The {0} database does not exist on {1}.", _
publicationDb, publisherName))
End If
' Set the required properties for the merge publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' Enable precomputed partitions.
publication.PartitionGroupsOption = PartitionGroupsOption.True
' Specify the Windows account under which the Snapshot Agent job runs.
' This account will be used for the local connection to the
' Distributor and all agent connections that use Windows Authentication.
publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin
publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword
' Explicitly set the security mode for the Publisher connection
' Windows Authentication (the default).
publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = True
' Enable Subscribers to request snapshot generation and filtering.
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowSubscriberInitiatedSnapshot
publication.Attributes = publication.Attributes Or _
PublicationAttributes.DynamicFilters
' Enable pull and push subscriptions
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowPull
publication.Attributes = publication.Attributes Or _
PublicationAttributes.AllowPush
If Not publication.IsExistingObject Then
' Create the merge publication.
publication.Create()
' Create a Snapshot Agent job for the publication.
publication.CreateSnapshotAgent()
Else
Throw New ApplicationException(String.Format( _
"The {0} publication already exists.", publicationName))
End If
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"The publication {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
Bu örnek, Parametreli satır filtreleriyle abone bölüm ve filtre uygulanmış anlık görüntüsünü birleştirme yayını için el ile oluşturur.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
string distributorName = publisherInstance;
MergePublication publication;
MergePartition partition;
MergeDynamicSnapshotJob snapshotAgentJob;
ReplicationAgentSchedule schedule;
// Create a connection to the Publisher.
ServerConnection publisherConn = new ServerConnection(publisherName);
// Create a connection to the Distributor to start the Snapshot Agent.
ServerConnection distributorConn = new ServerConnection(distributorName);
try
{
// Connect to the Publisher.
publisherConn.Connect();
// Set the required properties for the publication.
publication = new MergePublication();
publication.ConnectionContext = publisherConn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this merge publication,
// then throw an application exception.
if (publication.LoadProperties() || publication.SnapshotAvailable)
{
// Set a weekly schedule for the filtered data snapshot.
schedule = new ReplicationAgentSchedule();
schedule.FrequencyType = ScheduleFrequencyType.Weekly;
schedule.FrequencyRecurrenceFactor = 1;
schedule.FrequencyInterval = Convert.ToInt32(0x001);
// Set the value of Hostname that defines the data partition.
partition = new MergePartition();
partition.DynamicFilterHostName = hostname;
snapshotAgentJob = new MergeDynamicSnapshotJob();
snapshotAgentJob.DynamicFilterHostName = hostname;
// Create the partition for the publication with the defined schedule.
publication.AddMergePartition(partition);
publication.AddMergeDynamicSnapshotJob(snapshotAgentJob, schedule);
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication, " +
" or the initial snapshot has not been generated. " +
"Ensure that the publication {0} exists on {1} and " +
"that the Snapshot Agent has run successfully.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(string.Format(
"The partition for '{0}' in the {1} publication could not be created.",
hostname, publicationName), ex);
}
finally
{
publisherConn.Disconnect();
if (distributorConn.IsOpen) distributorConn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim distributorName As String = publisherInstance
Dim publication As MergePublication
Dim partition As MergePartition
Dim snapshotAgentJob As MergeDynamicSnapshotJob
Dim schedule As ReplicationAgentSchedule
' Create a connection to the Publisher.
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)
' Create a connection to the Distributor to start the Snapshot Agent.
Dim distributorConn As ServerConnection = New ServerConnection(distributorName)
Try
' Connect to the Publisher.
publisherConn.Connect()
' Set the required properties for the publication.
publication = New MergePublication()
publication.ConnectionContext = publisherConn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this merge publication,
' then throw an application exception.
If (publication.LoadProperties() Or publication.SnapshotAvailable) Then
' Set a weekly schedule for the filtered data snapshot.
schedule = New ReplicationAgentSchedule()
schedule.FrequencyType = ScheduleFrequencyType.Weekly
schedule.FrequencyRecurrenceFactor = 1
schedule.FrequencyInterval = Convert.ToInt32("0x001", 16)
' Set the value of Hostname that defines the data partition.
partition = New MergePartition()
partition.DynamicFilterHostName = hostname
snapshotAgentJob = New MergeDynamicSnapshotJob()
snapshotAgentJob.DynamicFilterHostName = hostname
' Create the partition for the publication with the defined schedule.
publication.AddMergePartition(partition)
publication.AddMergeDynamicSnapshotJob(snapshotAgentJob, schedule)
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication, " + _
" or the initial snapshot has not been generated. " + _
"Ensure that the publication {0} exists on {1} and " + _
"that the Snapshot Agent has run successfully.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException(String.Format( _
"The partition for '{0}' in the {1} publication could not be created.", _
hostname, publicationName), ex)
Finally
publisherConn.Disconnect()
If distributorConn.IsOpen Then
distributorConn.Disconnect()
End If
End Try
Bu örnek, Parametreli satır filtreleri ile birleştirme yayınına abone için süzülmüş veri anlık görüntüsünü oluşturmak için anında aracı el ile başlar.
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
string publisherName = publisherInstance;
string distributorName = publisherInstance;
SnapshotGenerationAgent agent;
try
{
// Set the required properties for Snapshot Agent.
agent = new SnapshotGenerationAgent();
agent.Distributor = distributorName;
agent.DistributorSecurityMode = SecurityMode.Integrated;
agent.Publisher = publisherName;
agent.PublisherSecurityMode = SecurityMode.Integrated;
agent.Publication = publicationName;
agent.PublisherDatabase = publicationDbName;
agent.ReplicationType = ReplicationType.Merge;
// Specify the partition information to generate a
// filtered snapshot based on Hostname.
agent.DynamicFilterHostName = hostname;
// Start the agent synchronously.
agent.GenerateSnapshot();
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"A snapshot could not be generated for the {0} publication."
, publicationName), ex);
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim publisherName As String = publisherInstance
Dim distributorName As String = publisherInstance
Dim agent As SnapshotGenerationAgent
Try
' Set the required properties for Snapshot Agent.
agent = New SnapshotGenerationAgent()
agent.Distributor = distributorName
agent.DistributorSecurityMode = SecurityMode.Integrated
agent.Publisher = publisherName
agent.PublisherSecurityMode = SecurityMode.Integrated
agent.Publication = publicationName
agent.PublisherDatabase = publicationDbName
agent.ReplicationType = ReplicationType.Merge
' Specify the partition information to generate a
' filtered snapshot based on Hostname.
agent.DynamicFilterHostName = hostname
' Start the agent synchronously.
agent.GenerateSnapshot()
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"A snapshot could not be generated for the {0} publication." _
, publicationName), ex)
End Try
[Top]
Ayrıca bkz.
Kavramlar
Yineleme sistem saklı yordamlar kavramları
Anlık görüntüler için birleştirme yayınları ile parametreli süzgeçleri