Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Bu konuda, SQL Server Management Studio, Transact-SQL veya Çoğaltma Yönetimi Nesneleri (RMO) kullanarak SQL Server'da anında iletme aboneliği oluşturma işlemi açıklanmaktadır. SQL Server abonesi olmayan bir abone için anında iletme aboneliği oluşturma hakkında bilgi için bkz. SQL Server abonesi olmayan bir abone için abonelik oluşturma.
Uyarı
Azure SQL Yönetilen Örnek, anlık görüntü ve işlem çoğaltması için yayımcı, dağıtıcı ve abone olarak kullanılabilir. Azure SQL Veritabanı'ndaki veritabanları yalnızca anlık görüntü ve işlem çoğaltması için gönderim aboneleri olabilir. Daha fazla bilgi için bkz. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile işlem çoğaltması.
SQL Server Management Studio'yu kullanma
Yeni Abonelik Sihirbazı'nı kullanarak Yayımcı'da veya Abone'de bir anında iletme aboneliği oluşturun. Sihirbazdaki sayfaları takip ederek:
Publisher'ı ve yayını belirtin.
Çoğaltma aracılarının nerede çalışacağını seçin. Gönderim aboneliği için Dağıtım Aracısı Konumu sayfasındaki Dağıtımcı (gönderim abonelikleri) veya Yayın türüne bağlı olarak Aracı Konumunu Birleştir sayfasında Tüm aracıları çalıştır'ı seçin.
Aboneleri ve abonelik veritabanlarını belirtin.
Çoğaltma aracıları tarafından yapılan bağlantılar için kullanılan oturum açma bilgilerini ve parolaları belirtin:
Anlık görüntü ve işlem yayınları abonelikleri için Dağıtım Aracısı Güvenliği sayfasında kimlik bilgilerini belirtin.
Birleştirme yayını abonelikleri için, Birleştirme Aracısı Güvenliği sayfasında kimlik bilgilerini belirtin.
Her bir aracının gerektirdiği izinler hakkında bilgi için, Çoğaltma aracısı güvenlik modeli'ne bakın.
Bir eşitleme takvimi ve abonenin başlatılması gerektiği zamanı belirtin.
Birleştirme yayınları için ek seçenekler belirtin: abonelik türü ve parametreli filtreleme için değerler.
Aboneliklerin güncelleştirilmesini sağlayan işlem yayınları için ek seçenekler belirtin. Seçeneklerden biri, Abonelerin değişiklikleri Publisher'da hemen mi yoksa bir kuyruğa mı yazacaklarına karar vermektir. Bir diğer seçenek de Aboneden Yayımcıya bağlanmak için kullanılan kimlik bilgilerini ayarlamaktır.
İsteğe bağlı olarak, aboneliği otomatik hale getirecek bir betik oluşturun.
Publisher'dan anında iletme aboneliği oluşturmak için
Microsoft SQL Server Management Studio'da Publisher'a bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
Bir veya daha fazla abonelik oluşturmak istediğiniz yayına sağ tıklayın ve ardından Yeni Abonelikler'i seçin.
Yeni Abonelik Sihirbazı'ndaki sayfaları tamamlayın.
Aboneden push aboneliği oluşturmak için
SQL Server Management Studio'da Aboneye bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin.
Yerel Abonelikler klasörüne sağ tıklayın ve ardından Yeni Abonelikler'i seçin.
Yeni Abonelik Sihirbazı'nın Yayıncı sayfasında, Dağıtıcı açılır listesinden <SQL Server Publisher Bul> veya <Oracle Publisher Bul> seçeneğini seçin.
Sunucuya Bağlan iletişim kutusunda Publisher'a bağlanın.
Yayın sayfasında bir yayın seçin.
Yeni Abonelik Sihirbazı'ndaki sayfaları tamamlayın.
Transact-SQL Kullanımı
Çoğaltma saklı yordamlarını kullanarak program aracılığıyla push abonelikleri oluşturabilirsiniz. Aboneliğin bağlı olduğu yayın türüne göre kullanılan saklı yordamlar değişiklik gösterebilir.
Önemli
Mümkün olduğunda, kullanıcılardan çalışma zamanında güvenlik kimlik bilgilerini girmelerini iste. Kimlik bilgilerini bir betik dosyasında depolamanız gerekiyorsa, yetkisiz erişimi önlemek için dosyanın güvenliğini sağlamalısınız.
Anlık görüntü yayınına veya işlem yayınına push aboneliği oluşturmak için
Yayın veritabanındaki Publisher'da, sp_helppublication çalıştırarak yayının anında iletme aboneliklerini desteklediğini doğrulayın.
allow_push değeri 1 ise anında iletme abonelikleri desteklenir.
allow_push değeri 0 ise sp_changepublication çalıştırın. @property için allow_push ve @value için true değerini belirtin.
Yayın veritabanındaki Publisher'da sp_addsubscription çalıştırın. @publication, @subscriber ve @destination_db belirtin. @subscription_type için push değerini belirtin. Abonelikleri güncelleştirme hakkında bilgi için bkz. İşlem yayını için güncelleştirilebilir abonelik oluşturma.
Yayın veritabanındaki Publisher'da sp_addpushsubscription_agent çalıştırın. Aşağıdakileri belirtin:
@subscriber, @subscriber_db ve @publication parametreleri.
Dağıtımcıdaki Dağıtım Aracısı'nın @job_login ve@job_password için çalıştığı Microsoft Windows kimlik bilgileri.
Uyarı
Windows Tümleşik Kimlik Doğrulaması aracılığıyla yapılan bağlantılar her zaman @job_login ve @job_password tarafından belirtilen Windows kimlik bilgilerini kullanır. Dağıtım Aracısı her zaman Windows Tümleşik Kimlik Doğrulaması kullanarak Dağıtımcıya yerel bağlantı kurar. Varsayılan olarak, aracı Windows Tümleşik Kimlik Doğrulaması kullanarak Aboneye bağlanır.
(İsteğe bağlı) @subscriber_security_mode için 0 değeri ve @subscriber_login ve @subscriber_password için Microsoft SQL Server oturum açma bilgileri. Aboneye bağlanırken SQL Server Kimlik Doğrulaması kullanmanız gerekiyorsa bu parametreleri belirtin.
Bu abonelik için Dağıtım Aracısı işi zamanlaması. Daha fazla bilgi için bkz. Eşitleme zamanlamalarını belirtme.
Önemli
Publisher'da uzak Dağıtımcı ile anında iletme aboneliği oluştururken, job_login ve job_password dahil olmak üzere tüm parametreler için sağlanan değerler Dağıtımcıya düz metin olarak gönderilir. Bu saklı yordamı çalıştırmadan önce Yayımcı ile uzak Dağıtımcı arasındaki bağlantıyı şifrelemeniz gerekir. Daha fazla bilgi için bkz . Veritabanı altyapısına şifreli bağlantıları etkinleştirme (SQL Server Configuration Manager).
Birleştirme yayınına anında iletme aboneliği oluşturmak için
Yayın veritabanındaki Publisher'da, sp_helpmergepublication çalıştırarak yayının anında iletme aboneliklerini desteklediğini doğrulayın.
allow_push değeri 1 ise yayın anında iletme aboneliklerini destekler.
allow_push değeri 1 değilse sp_changemergepublication çalıştırın. @property için allow_push ve @value için true değerini belirtin.
Yayın veritabanındaki Publisher'da sp_addmergesubscription çalıştırın. Aşağıdaki parametreleri belirtin:
@publication. Bu, yayının adıdır.
@subscriber_type. İstemci aboneliği için yerel'i belirtin. Sunucu aboneliği için genel değerini belirtin.
@subscription_priority. Sunucu aboneliği için abonelik için bir öncelik belirtin (0,00 - 99,99).
Daha fazla bilgi için bkz. Gelişmiş birleştirme çoğaltmada çakışma algılama ve çözümleme.
Yayın veritabanındaki Publisher'da sp_addmergepushsubscription_agent çalıştırın. Aşağıdakileri belirtin:
@subscriber, @subscriber_db ve @publication parametreleri.
Dağıtımcıdaki Birleştirme Aracısı'nın @job_login ve @job_password için çalıştığı Windows kimlik bilgileri.
Uyarı
Windows Tümleşik Kimlik Doğrulaması aracılığıyla yapılan bağlantılar her zaman @job_login ve @job_password tarafından belirtilen Windows kimlik bilgilerini kullanır. Birleştirme Aracısı her zaman Windows Tümleşik Kimlik Doğrulaması kullanarak Dağıtımcıya yerel bağlantı kurar. Varsayılan olarak, aracı Windows Tümleşik Kimlik Doğrulaması kullanarak Aboneye bağlanır.
(İsteğe bağlı) @subscriber_security_mode için 0 değeri ve @subscriber_loginve @subscriber_password için SQL Server oturum açma bilgileri. Aboneye bağlanırken SQL Server Kimlik Doğrulaması kullanmanız gerekiyorsa bu parametreleri belirtin.
(İsteğe bağlı) @publisher_security_mode için 0 değeri ve @publisher_loginve @publisher_password için SQL Server oturum açma bilgileri. Publisher'a bağlanırken SQL Server Kimlik Doğrulaması kullanmanız gerekiyorsa bu değerleri belirtin.
Bu abonelik için Birleştirme Aracısı görevi için bir zamanlama. Daha fazla bilgi için bkz. Eşitleme zamanlamalarını belirtme.
Önemli
Publisher'da uzak Dağıtımcı ile anında iletme aboneliği oluştururken, job_login ve job_password dahil olmak üzere tüm parametreler için sağlanan değerler Dağıtımcıya düz metin olarak gönderilir. Bu saklı yordamı çalıştırmadan önce Yayımcı ile uzak Dağıtımcı arasındaki bağlantıyı şifrelemeniz gerekir. Daha fazla bilgi için bkz . Veritabanı altyapısına şifreli bağlantıları etkinleştirme (SQL Server Configuration Manager).
Örnekler (Transact-SQL)
Aşağıdaki örnek, işlem yayınına anında iletme aboneliği oluşturur. Oturum açma ve parola değerleri sqlcmd betik değişkenleri aracılığıyla çalışma zamanında sağlanır.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2022Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
Aşağıdaki örnek, birleştirme yayınına bir gönderme aboneliği oluşturur. Oturum açma ve parola değerleri sqlcmd betik değişkenleri aracılığıyla çalışma zamanında sağlanır.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
Çoğaltma Yönetimi Nesnelerini Kullanma
Çoğaltma Yönetimi Nesnelerini (RMO) kullanarak program aracılığıyla anında iletme abonelikleri oluşturabilirsiniz. Anında iletme aboneliği oluşturmak için kullandığınız RMO sınıfları, aboneliğin oluşturulduğu yayın türüne bağlıdır.
Önemli
Mümkün olduğunda, kullanıcılardan çalışma zamanında güvenlik kimlik bilgilerini girmelerini iste. Kimlik bilgilerini depolamanız gerekiyorsa, Microsoft Windows .NET Framework'ün sağladığı şifreleme hizmetlerini kullanın.
Anlık görüntü veya işlem yayınına anında iletme aboneliği oluşturmak için
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
1. adımdaki TransPublication Publisher bağlantısını kullanarak sınıfının bir örneğini oluşturun. Name, DatabaseName ve ConnectionContext belirtin.
yöntemini çağırın LoadProperties . Bu yöntem false döndürürse, 2. adımda belirtilen özellikler yanlıştır veya yayın sunucuda mevcut değildir.
özelliği ile arasında bir bit düzeyinde mantıksal VE (Visual C#’ta Attributes ve Visual Basic’te Ve) işlemi gerçekleştirin AllowPush. Sonuç None ise, Attributes'i, Attributes ve AllowPush arasında Visual C# dilinde | ve Visual Basic dilinde Or olan bit düzeyinde mantıksal OR sonucuna ayarlayın. Ardından, CommitPropertyChanges'yi çağırarak anında iletme aboneliklerini etkinleştirin.
Abonelik veritabanı yoksa sınıfını Database kullanarak oluşturun. Daha fazla bilgi için bkz. Veritabanları oluşturma, değiştirme ve kaldırma.
Sınıfının bir örneğini TransSubscription oluşturun.
Aşağıdaki abonelik özelliklerini ayarlayın:
ServerConnection için 1. adımda oluşturulan YayımcıyaConnectionContext.
için SubscriptionDBNameabonelik veritabanının adı.
abonesinin SubscriberNameadı.
için DatabaseNameyayın veritabanının adı.
için PublicationNameyayının adı.
Login ve Password alanları, Dağıtımcı'da Dağıtım Aracısı'nın çalıştığı Microsoft Windows hesabının kimlik bilgilerini sağlamak için kullanılır. Bu hesap, Dağıtımcıya yerel bağlantılar oluşturmak ve Windows Kimlik Doğrulaması kullanarak uzak bağlantılar oluşturmak için kullanılır.
Uyarı
Ayarlama SynchronizationAgentProcessSecurity abonelik sysadmin sabit sunucu rolünün bir üyesi tarafından oluşturulduğunda gerekli değildir, ancak bunu öneririz. Bu durumda, aracı SQL Server Agent hesabının kimliğine bürünecektir. Daha fazla bilgi için bkz . Çoğaltma Aracısı güvenlik modeli.
(İsteğe bağlı) Aboneliği eşitlemek için kullanılan bir aracı işi oluşturmak amacıyla, için CreateSyncAgentByDefault değeri (varsayılan) verilmiştir. False belirtirseniz, abonelik yalnızca program aracılığıyla eşitlenebilir.
(İsteğe bağlı) SQL Server Kimlik Doğrulaması'nı kullanarak Aboneye bağlanırken, WindowsAuthentication değerini False olarak, SqlStandardLogin, SqlStandardPassword ve SecureSqlStandardPassword veya SubscriberSecurity alanlarını ayarlayın.
yöntemini çağırın Create .
Önemli
Publisher'da uzak dağıtıcı ile push aboneliği oluştururken, SynchronizationAgentProcessSecurity dahil olmak üzere tüm özellikler için sağlanan değerler düz metin olarak dağıtıcıya gönderilir. Yöntemini çağırmadan Create önce Publisher ile uzak Dağıtımcı arasındaki bağlantıyı şifrelemeniz gerekir. Daha fazla bilgi için bkz . Veritabanı altyapısına şifreli bağlantıları etkinleştirme (SQL Server Configuration Manager).
Birleştirme yayınına anında iletme aboneliği oluşturmak için
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
1. adımdaki MergePublication Publisher bağlantısını kullanarak sınıfının bir örneğini oluşturun. Name'yi, DatabaseName'yi ve ConnectionContext'yi belirtin.
yöntemini çağırın LoadProperties . Bu yöntem false döndürürse, 2. adımda belirtilen özellikler yanlıştır veya yayın sunucuda mevcut değildir.
Attributes özelliği ve AllowPush arasında bit düzeyinde mantıksal AND işlemi (Visual C#'ta & ve Visual Basic'te And) gerçekleştirin. Sonuç None ise, Attributes, Attributes ile AllowPush arasında Visual C# içindeki | veya Visual Basic'deki Or operatörlerinin bit düzeyinde mantıksal OR (|) sonucu olarak ayarlayın. Ardından, CommitPropertyChanges çağrısını yaparak anında bildirim aboneliklerini etkinleştirin.
Abonelik veritabanı yoksa sınıfını Database kullanarak oluşturun. Daha fazla bilgi için bkz. Veritabanları oluşturma, değiştirme ve kaldırma.
Sınıfının bir örneğini MergeSubscription oluşturun.
Aşağıdaki abonelik özelliklerini ayarlayın:
ServerConnection için 1. adımda oluşturulan YayımcıyaConnectionContext.
için SubscriptionDBNameabonelik veritabanının adı.
SubscriberName abonesinin adı.
için DatabaseNameyayın veritabanının adı.
için PublicationNameyayının adı.
Login ve Password alanlarıSynchronizationAgentProcessSecurity, Birleştirme Aracısı'nın Dağıtımcı'da çalıştığı Microsoft Windows hesabının kimlik bilgilerini sağlar. Bu hesap, Dağıtımcı'ya yerel bağlantılar yapmak ve Windows Kimlik Doğrulaması aracılığıyla uzak bağlantılar yapmak için kullanılır.
Uyarı
Abonelik SynchronizationAgentProcessSecurity sabit sunucu rolünün bir üyesi tarafından oluşturulduğunda ayar gerekli değildir, ancak bunu öneririz. Bu durumda, aracı SQL Server Agent hesabının kimliğine bürünecektir. Daha fazla bilgi için bkz . Çoğaltma Aracısı güvenlik modeli.
(İsteğe bağlı) Aboneliği eşitlemek için kullanılan bir aracı işi oluşturmak için CreateSyncAgentByDefault (varsayılan) değeri. false belirtirseniz, abonelik yalnızca program yoluyla eşitlenebilir.
(İsteğe bağlı) Aboneye bağlanmak için SQL Server Kimlik Doğrulaması kullanılırken, SubscriberSecurity alanlarını SqlStandardLogin ve SqlStandardPassword veya SecureSqlStandardPassword olarak ayarlayın.
(Optional) Yayımcıya bağlanmak için SQL Server Kimlik Doğrulaması kullanılırken, WindowsAuthentication'ü False ve SqlStandardLogin, SqlStandardPassword veya SecureSqlStandardPassword alanlarını PublisherSecurity ayarlayın.
yöntemini çağırın Create .
Önemli
Publisher ile uzak bir Dağıtımcıda anında iletme aboneliği oluştururken, SynchronizationAgentProcessSecurity dahil olmak üzere tüm özellikler için sağlanan değerler düz metin olarak Dağıtımcı'ya gönderilir. Yöntemini çağırmadan Create önce Publisher ile uzak Dağıtımcı arasındaki bağlantıyı şifrelemeniz gerekir. Daha fazla bilgi için bkz . Veritabanı altyapısına şifreli bağlantıları etkinleştirme (SQL Server Configuration Manager).
Örnekler (RMO)
Bu örnek, transaksiyonel yayına yeni bir anlık abonelik oluşturur. Dağıtım Aracısı işini çalıştırmak için kullandığınız Windows hesabı kimlik bilgileri çalışma anında geçirilir.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
string publicationDbName = "AdventureWorks2022";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
// Create the objects that we need.
TransPublication publication;
TransSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new TransPublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = conn;
if (publication.IsExistingObject)
{
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Define the push subscription.
subscription = new TransSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
// Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// By default, subscriptions to transactional publications are synchronized
// continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand;
// Create the push subscription.
subscription.Create();
}
else
{
// Do something here if the publication does not exist.
throw new ApplicationException(String.Format(
"The publication '{0}' does not exist on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksProductTran"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
' Create the objects that we need.
Dim publication As TransPublication
Dim subscription As TransSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New TransPublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = conn
If publication.IsExistingObject Then
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Define the push subscription.
subscription = New TransSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
' Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' By default, subscriptions to transactional publications are synchronized
' continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand
' Create the push subscription.
subscription.Create()
Else
' Do something here if the publication does not exist.
Throw New ApplicationException(String.Format( _
"The publication '{0}' does not exist on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"The subscription to {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
Bu örnek, bir yayını birleştirme için yeni bir push aboneliği oluşturur. Birleştirme Aracısı işini çalıştırmak için kullandığınız Windows hesap kimlik bilgileri başlatma sırasında iletilir.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
string publicationDbName = "AdventureWorks2022";
string hostname = @"adventure-works\garrett1";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
// Create the objects that we need.
MergePublication publication;
MergeSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new MergePublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = conn;
if (publication.IsExistingObject)
{
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Define the push subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.HostName = hostname;
// Set a schedule to synchronize the subscription every 2 hours
// during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly;
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32(0x003E);
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1;
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour;
subscription.AgentSchedule.FrequencySubDayInterval = 2;
subscription.AgentSchedule.ActiveStartDate = 20051108;
subscription.AgentSchedule.ActiveEndDate = 20071231;
subscription.AgentSchedule.ActiveStartTime = 060000;
subscription.AgentSchedule.ActiveEndTime = 100000;
// Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// Create the push subscription.
subscription.Create();
}
else
{
// Do something here if the publication does not exist.
throw new ApplicationException(String.Format(
"The publication '{0}' does not exist on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
Dim hostname As String = "adventure-works\garrett1"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergeSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New MergePublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = conn
If publication.IsExistingObject Then
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Define the push subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
subscription.HostName = hostname
' Set a schedule to synchronize the subscription every 2 hours
' during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32("0x003E", 16)
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour
subscription.AgentSchedule.FrequencySubDayInterval = 2
subscription.AgentSchedule.ActiveStartDate = 20051108
subscription.AgentSchedule.ActiveEndDate = 20071231
subscription.AgentSchedule.ActiveStartTime = 60000
subscription.AgentSchedule.ActiveEndTime = 100000
' Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' Create the push subscription.
subscription.Create()
Else
' Do something here if the publication does not exist.
Throw New ApplicationException(String.Format( _
"The publication '{0}' does not exist on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"The subscription to {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try