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 Yönetilen Örneği
Bu konu, SQL Server Management Studio, replikasyon ajanları veya Replikasyon Yönetim Nesneleri (RMO) kullanılarak SQL Server Management Studio'da pull aboneliğinin nasıl senkronize edileceğini açıklar.
SQL Server Management Studio'yu kullanma
Abonelikler Dağıtım Aracısı (anlık görüntü ve işlem çoğaltması için) veya Birleştirme Aracısı (birleştirme çoğaltması için) tarafından eşitlenir. Ajanlar sürekli çalışabilir, isteğe bağlı olarak çalıştırılabilir veya bir zamanlamaya göre çalışabilir. Eşitleme zamanlamalarını belirtme hakkında daha fazla bilgi için bkz. Eşitleme Zamanlamalarını Belirtme.
SQL Server Management Studio'daki Local Subscriptions klasöründen talep üzerine aboneliği senkronize edin.
Management Studio'da talep üzerine pull aboneliğini senkronize etmek için
Management Studio'da Abone'ye bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Abonelikler klasörünü genişletin.
Eşitlemek istediğiniz aboneliğe sağ tıklayın ve ardından Eşitleme Durumunu Görüntüle'ye tıklayın.
Eşitleme Durumunu Görüntüle - <Abone>:<AbonelikVeritabanı> iletişim kutusunda Başlat'a tıklayın. Eşitleme tamamlandığında Eşitleme tamamlandı iletisi görüntülenir.
Kapat'a tıklayın.
Çoğaltma Aracıları
Pull abonelikleri, komut sabitinden uygun replikasyon ajanı çalıştırılabilir dosyayı çağrılarak programatik ve talep üzerine senkronize edilebilir. Çağrılan replikasyon ajanı çalıştırılabilir dosyası, pull aboneliğinin ait olduğu yayın türüne bağlıdır. Daha fazla bilgi için Replikasyon Ajanları bölümünü inceleyin.
Uyarı
Replikasyon ajanları, komut satırından ajanı başlatan kullanıcının Windows Kimlik bilgileri kullanarak yerel sunucuya bağlanır. Bu Windows kimlik bilgileri, Windows Entegre Kimlik Doğrulaması kullanılarak uzak sunuculara bağlanırken de kullanılır.
Dağıtım ajanını komut isteğinden veya toplu dosyadan başlatmak için
Komut isteminden veya bir toplu iş dosyasında, aşağıdaki komut satırı bağımsız değişkenlerini belirterek distrib.exe programını çalıştırıp Çoğaltma Dağıtım Aracısı’nı başlatın:
-Yayınevi
-PublisherDB
-Dağıtıcı
-DistributorSecurityMode = 1
-Abone
-SubscriberDB
-Abone Güvenlik Modu = 1
-Abonelik Türü = 1
SQL Server Kimlik Doğrulaması kullanıyorsanız aşağıdaki bağımsız değişkenleri de belirtmeniz gerekir:
-DistributorLogin
-DağıtıcıŞifre
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-YayıncıGüvenlik Modu = 0
-SubscriberLogin
-SubscriberPassword
-Abone Güvenlik Modu = 0
Birleştirme ajanını komut isteminden veya toplu dosyadan başlatmak için
Komut dizisinden veya toplu dosyada, Replikasyon Merge Agent'yi başlatarak replmerg.exeçalıştırın, aşağıdaki komut satırı argümanlarını belirtin:
-Yayınevi
-PublisherDB
-YayıncıGüvenlik Modu = 1
-Yayın
-Dağıtıcı
-DistributorSecurityMode = 1
-Abone
-Abone Güvenlik Modu = 1
-SubscriberDB
-Abonelik Türü = 1
SQL Server Kimlik Doğrulaması kullanıyorsanız aşağıdaki bağımsız değişkenleri de belirtmeniz gerekir:
-DistributorLogin
-DağıtıcıŞifre
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-YayıncıGüvenlik Modu = 0
-SubscriberLogin
-SubscriberPassword
-Abone Güvenlik Modu = 0
Örnekler (Çoğaltma Aracıları)
Aşağıdaki örnek, Distribution Agent'ı bir pull aboneliğini senkronize etmek için başlatır. Tüm bağlantılar Windows Kimlik Doğrulaması kullanılarak yapılır.
-- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks
SET SubscriptionDB=AdventureWorksReplica
SET Publication=AdvWorksProductsTran
-- Start the Distribution Agent.
-- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\100\COM\DISTRIB.EXE" -Subscriber %Subscriber%
-SubscriberDB %SubscriptionDB% -SubscriberSecurityMode 1 -Publication %Publication%
-Publisher %Publisher% -PublisherDB %PublicationDB% -Distributor %Publisher%
-DistributorSecurityMode 1 -Continuous -SubscriptionType 1;
Aşağıdaki örnek, Merge Agent'ı bir pull aboneliğini senkronize etmek için başlatır. Tüm bağlantılar Windows Kimlik Doğrulaması kullanılarak yapılır.
-- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks
SET SubscriptionDB=AdventureWorksReplica
SET Publication=AdvWorksSalesOrdersMerge
--Start the Merge Agent with concurrent upload and download processes.
-- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\100\COM\REPLMERG.EXE" -Publication %Publication%
-Publisher %Publisher% -Subscriber %Subscriber% -Distributor %Publisher%
-PublisherDB %PublicationDB% -SubscriberDB %SubscriptionDB% -PublisherSecurityMode 1
-OutputVerboseLevel 2 -SubscriberSecurityMode 1 -SubscriptionType 1 -DistributorSecurityMode 1
-Validate 3 -ParallelUploadDownload 1 ;
Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma
Replikasyon Yönetim Nesneleri (RMO) ve yönetilen kod erişimini kullanarak pull aboneliklerini programatik olarak senkronize edebilirsiniz. Pull aboneliğini senkronize etmek için kullandığınız sınıflar, aboneliğin ait olduğu yayın türüne bağlıdır.
Uyarı
Uygulamanızı etkilemeden otonom olarak çalışan bir eşitleme başlatmak istiyorsanız aracıyı zaman uyumsuz olarak başlatın. Ancak, senkronizasyonun sonucunu izlemek ve senkronizasyon sürecinde ajandan geri çağrılar almak istiyorsanız (örneğin, ilerleme çubuğu göstermek için), ajanı senkronize başlatmalısınız. Microsoft SQL Server 2005 Express sürümü Aboneleri için aracıyı zaman uyumlu olarak başlatmanız gerekir.
Pull aboneliğini bir anlık görüntü veya işlemsel yayınla senkronize etmek için
sınıfını kullanarak ServerConnection Aboneye bir bağlantı oluşturun.
Sınıfının bir örneğini TransPullSubscription oluşturun ve aşağıdaki özellikleri ayarlayın:
DatabaseName için abonelik veritabanı adı.
Aboneliğin ait olduğu yayının adı PublicationName.
PublicationDBName için yayın veritabanının adı.
PublisherName için Yayıncının adı.
1. adımda ConnectionContext için oluşturulan bağlantı.
LoadProperties yöntemini, kalan abonelik özelliklerini almak için çağırın. Bu yöntem false döndürürse aboneliğin var olduğunu doğrulayın.
Distribution Agent'ı abone olarak aşağıdaki yöntemlerden biriyle başlatın:
Adım 2'deki SynchronizeWithJob örneğinde TransPullSubscription yöntemini çağırın. Bu yöntem, Dağıtım Aracı'nı zaman uyumsuz olarak başlatır ve aracı görevi çalışırken kontrol derhal uygulamanıza geri döner. Bu yöntemi SQL Server 2005 Express sürüm aboneleri için veya abonelik false değeriyleCreateSyncAgentByDefault oluşturulmuş olsa (varsayılan olarak) çağıramazsınız.
TransSynchronizationAgent özelliğinden SynchronizationAgent sınıfının bir örneğini alın ve Synchronize metodunu çağırın. Bu yöntem aracıyı zaman uyumlu olarak başlatır ve denetim çalışan aracı işiyle birlikte kalır. Zaman uyumlu yürütme sırasında, Status olayını aracı çalışırken işleyebilirsiniz.
Uyarı
Çekme aboneliğini oluştururken CreateSyncAgentByDefault için false değerini belirttiyseniz (varsayılan değer budur), aboneliğe ilişkin aracı işi meta verileri MSsubscription_properties'de bulunmadığından, ayrıca Distributor ve DistributorSecurityMode ile isteğe bağlı olarak DistributorLogin ve DistributorPassword değerlerini de belirtmeniz gerekir.
Bir pull aboneliğini bir merge yayınına senkronize etmek için
sınıfını kullanarak ServerConnection Aboneye bir bağlantı oluşturun.
Sınıfının bir örneğini MergePullSubscription oluşturun ve aşağıdaki özellikleri ayarlayın:
DatabaseName için abonelik veritabanı adı.
Aboneliğin ait olduğu yayının adı PublicationName.
PublicationDBName için yayımlanan veritabanının adı.
PublisherName için yayımcının adı.
1. adımda ConnectionContext için oluşturulan bağlantı.
LoadProperties yöntemini, kalan abonelik özelliklerini almak için çağırın. Bu yöntem false döndürürse aboneliğin var olduğunu doğrulayın.
Merge Agent'ı abone olarak şu yollardan biriyle başlatın:
Adım 2'deki SynchronizeWithJob örneğinde MergePullSubscription yöntemini çağırın. Bu yöntem, Birleştirme Aracısı'nı eşzamanlı olmayan şekilde başlatır ve aracının görevi çalışırken denetim hemen uygulamanıza geri döner. Bu yöntemi SQL Server 2005 Express sürüm aboneleri için veya abonelik false değeriyleCreateSyncAgentByDefault oluşturulmuş olsa (varsayılan olarak) çağıramazsınız.
MergeSynchronizationAgent özelliğinden SynchronizationAgent sınıfının bir örneğini alın ve Synchronize yöntemini çağırın. Bu yöntem Birleştirme Aracısı'nı zaman uyumlu olarak başlatır ve kontrol çalışan aracı işiyle birlikte kalır. Zaman uyumlu yürütme sırasında, Status olayını aracı çalışırken işleyebilirsiniz.
Uyarı
Eğer pull aboneliğini oluştururken CreateSyncAgentByDefault için false değerini belirttiyseniz (varsayılan), aboneliğe ilişkin aracı iş meta verileri MSsubscription_properties'de kullanılamadığından Distributor, DistributorSecurityMode, PublisherSecurityMode, HostName, SubscriptionType ve ExchangeType öğelerini, ayrıca isteğe bağlı olarak DistributorLogin, DistributorPassword, PublisherLogin ve PublisherPassword öğelerini de belirtmeniz gerekir.
Örnekler (RMO)
Bu örnek, pull aboneliğini, ajanın ajanı görevi kullanılarak asenkron olarak başlattığı işlemsel yayına senkronize eder.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksProductTran";
String publicationDbName = "AdventureWorks";
String subscriptionDbName = "AdventureWorksReplica";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
TransPullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define subscription properties.
subscription = new TransPullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription and the job exists, start the agent job.
if (subscription.LoadProperties() && subscription.AgentJobId != null)
{
subscription.SynchronizeWithJob();
}
else
{
// Do something here if the subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exists on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Do appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks"
Dim subscriptionDbName As String = "AdventureWorksReplica"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As TransPullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define subscription properties.
subscription = New TransPullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription and the job exists, start the agent job.
If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
subscription.SynchronizeWithJob()
Else
' Do something here if the subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exists on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Do appropriate error handling here.
Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, pull aboneliğini, ajanın senkronize olarak başlatıldığı bir işlemsel yayınla senkronize eder.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string subscriptionDbName = "AdventureWorksReplica";
string publicationDbName = "AdventureWorks";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
TransPullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new TransPullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription exists, then start the synchronization.
if (subscription.LoadProperties())
{
// Check that we have enough metadata to start the agent.
if (subscription.PublisherSecurity != null)
{
// Synchronously start the Distribution Agent for the subscription.
subscription.SynchronizationAgent.Synchronize();
}
else
{
throw new ApplicationException("There is insufficient metadata to " +
"synchronize the subscription. Recreate the subscription with " +
"the agent job or supply the required agent properties at run time.");
}
}
else
{
// Do something here if the pull subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be " +
"synchronized. Verify that the subscription has " +
"been defined correctly.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim subscriptionDbName As String = "AdventureWorksReplica"
Dim publicationDbName As String = "AdventureWorks"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As TransPullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New TransPullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription exists, then start the synchronization.
If subscription.LoadProperties() Then
' Check that we have enough metadata to start the agent.
If Not subscription.PublisherSecurity Is Nothing Then
' Write agent output to a log file.
subscription.SynchronizationAgent.Output = "distagent.log"
subscription.SynchronizationAgent.OutputVerboseLevel = 2
' Synchronously start the Distribution Agent for the subscription.
subscription.SynchronizationAgent.Synchronize()
Else
Throw New ApplicationException("There is insufficient metadata to " + _
"synchronize the subscription. Recreate the subscription with " + _
"the agent job or supply the required agent properties at run time.")
End If
Else
' Do something here if the pull subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be " + _
"synchronized. Verify that the subscription has " + _
"been defined correctly.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, pull aboneliğini birleştirme yayınına senkronize eder; burada ajan asenkron olarak ajan işi kullanılarak başlatılır.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksSalesOrdersMerge";
String publicationDbName = "AdventureWorks";
String subscriptionDbName = "AdventureWorksReplica";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define subscription properties.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription and the job exists, start the agent job.
if (subscription.LoadProperties() && subscription.AgentJobId != null)
{
subscription.SynchronizeWithJob();
}
else
{
// Do something here if the subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exists on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Do appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks"
Dim subscriptionDbName As String = "AdventureWorksReplica"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define subscription properties.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription and the job exists, start the agent job.
If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
subscription.SynchronizeWithJob()
Else
' Do something here if the subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exists on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Do appropriate error handling here.
Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, pull aboneliğini bir birleştirme yayınına senkronize eder ve ajan senkronize olarak başlatılır.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorksReplica";
string publicationDbName = "AdventureWorks";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription exists, then start the synchronization.
if (subscription.LoadProperties())
{
// Check that we have enough metadata to start the agent.
if (subscription.PublisherSecurity != null || subscription.DistributorSecurity != null)
{
// Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize();
}
else
{
throw new ApplicationException("There is insufficient metadata to " +
"synchronize the subscription. Recreate the subscription with " +
"the agent job or supply the required agent properties at run time.");
}
}
else
{
// Do something here if the pull subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be " +
"synchronized. Verify that the subscription has " +
"been defined correctly.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorksReplica"
Dim publicationDbName As String = "AdventureWorks"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription exists, then start the synchronization.
If subscription.LoadProperties() Then
' Check that we have enough metadata to start the agent.
If Not subscription.PublisherSecurity Is Nothing Or subscription.DistributorSecurity Is Nothing Then
' Output agent messages to the console.
subscription.SynchronizationAgent.OutputVerboseLevel = 1
subscription.SynchronizationAgent.Output = ""
' Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize()
Else
Throw New ApplicationException("There is insufficient metadata to " + _
"synchronize the subscription. Recreate the subscription with " + _
"the agent job or supply the required agent properties at run time.")
End If
Else
' Do something here if the pull subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be " + _
"synchronized. Verify that the subscription has " + _
"been defined correctly.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, bir çekme aboneliğini Web senkronizasyonunu kullanarak bir birleştirme yayınıyla senkronize eder. Abonelik, ajan işi ve ilgili abonelik meta verileri olmadan oluşturulmuştur, bu yüzden ajan eşzamanlı olarak başlatılmalı ve ek abonelik bilgileri sağlanmalıdır.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string distributorName = distributorInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorksReplica";
string publicationDbName = "AdventureWorks";
string hostname = @"adventure-works\garrett1";
string webSyncUrl = "https://" + publisherInstance + "/SalesOrders/replisapi.dll";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
MergeSynchronizationAgent agent;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription exists, then start the synchronization.
if (subscription.LoadProperties())
{
// Get the agent for the subscription.
agent = subscription.SynchronizationAgent;
// Check that we have enough metadata to start the agent.
if (agent.PublisherSecurityMode == null)
{
// Set the required properties that could not be returned
// from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated;
agent.DistributorSecurityMode = SecurityMode.Integrated;
agent.Distributor = publisherName;
agent.HostName = hostname;
// Set optional Web synchronization properties.
agent.UseWebSynchronization = true;
agent.InternetUrl = webSyncUrl;
agent.InternetSecurityMode = SecurityMode.Standard;
agent.InternetLogin = winLogin;
agent.InternetPassword = winPassword;
}
// Enable agent output to the console.
agent.OutputVerboseLevel = 1;
agent.Output = "";
// Synchronously start the Merge Agent for the subscription.
agent.Synchronize();
}
else
{
// Do something here if the pull subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exist on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("The subscription could not be " +
"synchronized. Verify that the subscription has " +
"been defined correctly.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorksReplica"
Dim publicationDbName As String = "AdventureWorks"
Dim hostname As String = "adventure-works\garrett1"
Dim webSyncUrl As String = "https://" + publisherInstance + "/SalesOrders/replisapi.dll"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Dim agent As MergeSynchronizationAgent
Try
' Connect to the Subscriber.
conn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription exists, then start the synchronization.
If subscription.LoadProperties() Then
' Get the agent for the subscription.
agent = subscription.SynchronizationAgent
' Check that we have enough metadata to start the agent.
If agent.PublisherSecurityMode = Nothing Then
' Set the required properties that could not be returned
' from the MSsubscription_properties table.
agent.PublisherSecurityMode = SecurityMode.Integrated
agent.Distributor = publisherInstance
agent.DistributorSecurityMode = SecurityMode.Integrated
agent.HostName = hostname
' Set optional Web synchronization properties.
agent.UseWebSynchronization = True
agent.InternetUrl = webSyncUrl
agent.InternetSecurityMode = SecurityMode.Standard
agent.InternetLogin = winLogin
agent.InternetPassword = winPassword
End If
' Enable agent logging to the console.
agent.OutputVerboseLevel = 1
agent.Output = ""
' Synchronously start the Merge Agent for the subscription.
agent.Synchronize()
Else
' Do something here if the pull subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exist on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("The subscription could not be " + _
"synchronized. Verify that the subscription has " + _
"been defined correctly.", ex)
Finally
conn.Disconnect()
End Try