Çekme abonelik Eşitle
Bu konuda bir çekme abonelik eşitleme açıklar SQL Server 2012kullanarak SQL Server Management Studio, çoğaltma aracıları, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo).
Bu Konuda
Çekme abonelik eşitlemek için kullanma:
SQL Server Management Studio
Çoğaltma aracıları
Çoğaltma Yönetimi Nesneleri'ni (rmo)
SQL Server Management Studio Kullanarak
Abonelikleri (için anlık görüntü ve işlem çoğaltma) Dağıtım Aracısı veya Birleştirme Aracısı (birleştirme çoğaltma) eşitlenir. Ajanlar, sürekli çalışacak, istek üzerine çalıştırmak veya bir zamanlamaya göre çalıştır. Eşitleme çizelgelerini belirleme hakkında daha fazla bilgi için bkz: Eşitleme çizelgelerini belirleme.
Talep üzerine bir abonelik Eşitle Yerel Abonelikleri klasöründe SQL Server Management Studio.
Çekme abonelik Management Studio'da isteğe bağlı eşitlemek için
Abone bağlanmak Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından Yerel Abonelikleri klasörü.
Eşitlemek ve tıklatın istediğiniz abonelik sağ Görünüm eşitleme durum.
İçinde Görünüm eşitleme durum - <abone>:<SubscriptionDatabase > iletişim kutusu'yı Start. Zaman eşitleme tamamlandığında, mesaj Eşitleme Tamamlandı görüntülenir.
Tıklayın yakın.
[Top]
Çoğaltma aracıları
Çekme abonelikleri programla senkronize edilebilir ve uygun çoğaltma aracısı yürütülebilir dosya komutunun yürütmesini tarafından isteğe bağlı ister. Çağrılan çoğaltma aracısı yürütülebilir dosya çekme abonelik ait olduğu yayın türüne bağlıdır. Daha fazla bilgi için, bkz. Çoğaltma aracıları.
[!NOT]
Çoğaltma aracıları komut isteminden Aracısı'nı başlatan kullanıcı Windows kimlik doğrulaması kimlik bilgilerini kullanarak yerel sunucuya bağlanın. Bu Windows kimlik bilgileri, ayrıca Windows tümleşik kimlik doğrulaması kullanarak uzak sunuculara bağlanırken kullanılır.
Dağıtım Aracısı toplu iş dosyasından veya komut isteminden başlatmak için
Komut isteminde veya bir toplu iş dosyasında, başlangıç Çoğaltma Dağıtım Aracısı çalıştırarak AracısıDistrib.exe, aşağıdaki komut satırı değişkenleri belirtme:
-Yayınevi
PublisherDB-
-Dağıtıcı
-DistributorSecurityMode = 1
-Abone
-SubscriberDB
-SubscriberSecurityMode = 1
-SubscriptionType = 1
If you are using SQL Serverkimlik, aynı zamanda aşağıdaki bağımsız değişkenler belirtmelisiniz:
-DistributorLogin
-DistributorPassword
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-PublisherSecurityMode = 0
-SubscriberLogin
-SubscriberPassword
-SubscriberSecurityMode = 0
Birleştirme Aracısı toplu iş dosyasından veya komut isteminden başlatmak için
Komut isteminde veya bir toplu iş dosyasında, başlangıç Çoğaltma Birleştirme Aracısı çalıştırarak replmerg.exe, aşağıdaki komut satırı değişkenleri belirtme:
-Yayınevi
PublisherDB-
-PublisherSecurityMode = 1
-Yayın
-Dağıtıcı
-DistributorSecurityMode = 1
-Abone
-SubscriberSecurityMode = 1
-SubscriberDB
-SubscriptionType = 1
If you are using SQL Serverkimlik, aynı zamanda aşağıdaki bağımsız değişkenler belirtmelisiniz:
-DistributorLogin
-DistributorPassword
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-PublisherSecurityMode = 0
-SubscriberLogin
-SubscriberPassword
-SubscriberSecurityMode = 0
Örnekler (çoğaltma aracıları)
Aşağıdaki örnek, bir çekme abonelik eşitlemek için dağıtım aracı başlatılır. Tüm bağlantılar, Windows kimlik doğrulaması kullanılarak yapılır.
REM -- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks2012
SET SubscriptionDB=AdventureWorks2012Replica
SET Publication=AdvWorksProductsTran
REM -- Start the Distribution Agent.
REM -- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\110\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, bir çekme abonelik eşitlemek için Birleştirme Aracısı başlar. Tüm bağlantılar, Windows kimlik doğrulaması kullanılarak yapılır.
REM -- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks2012
SET SubscriptionDB=AdventureWorks2012Replica
SET Publication=AdvWorksSalesOrdersMerge
REM --Start the Merge Agent with concurrent upload and download processes.
REM -- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\110\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
[Top]
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak
Çoğaltma Yönetimi Nesneleri'ni (rmo) ve yönetilen kod erişim için çoğaltma aracısı işlevleri kullanarak çekme abonelikleri program aracılığıyla senkronize edebilirsiniz. Çekme abonelik eşitlemek için kullandığınız sınıfları abonelik ait olduğu yayın türüne bağlıdır.
[!NOT]
Uygulamanızın etkilemeden kendi başına çalışan bir eşitlemeyi başlatmak istiyorsanız, zaman uyumsuz olarak aracı başlatın. Ancak, Eşitleme sonuçlarını izlemek ve (örneğin bir ilerleme çubuğu görüntülemek için) eşitleme işlemi sırasında Aracısı'ndan geri almak isterseniz, aracı eşzamanlı olarak başlamalıdır. İçin Microsoft SQL Server 2005 Express Editionabone, sen başlamalı aracı eşzamanlı.
Anlık görüntü veya işlem yayın için çekme abonelik eşitlemek için
Abone bir bağlantı kullanarak oluşturmak ServerConnectionsınıf
Örneğini TransPullSubscriptionsınıf ve aşağıdaki özellikleri ayarlayın:
Abonelik veritabanı adı DatabaseName.
Abonelik ait olduğu için yayın adı PublicationName.
Yayını veritabanı adı PublicationDBName.
Yayıncı adı PublisherName.
Adım 1'de oluşturduğunuz bağlantı ConnectionContext.
Arama LoadPropertieskalan abonelik özelliklerini almak için yöntem. Bu yöntem ise false, abonelik varolduğundan emin olun.
Abone adresindeki dağıtım aracı aşağıdaki yollardan biriyle başlatabilirsiniz:
Arama SynchronizeWithJobyöntemi örneği TransPullSubscriptiondan adım 2. Bu yöntem Dağıtım Aracısı zaman uyumsuz olarak başlar ve Aracısı iş çalışırken denetimi hemen uygulamanıza döndürür. Bu yöntem için çağrı yapamazsınız SQL Server 2005 Express Editionaboneler veya abonelik bir değeri ile oluşturulmuş olup olmadığını falseiçin CreateSyncAgentByDefault(varsayılan).
Bir örneğini almak TransSynchronizationAgentitibaren sınıf SynchronizationAgentözelliği ve çağrı Synchronizeyöntemi. Bu yöntem eş zamanlı agent başlatır ve kontrol ile çalışan Aracısı iş kalır. Eşzamanlı yürütme sırasında idare StatusAracısı çalışırken olay.
[!NOT]
Bir değer belirtilmişse falseiçin CreateSyncAgentByDefault(varsayılan) çekme abonelik oluşturduğunuzda, Ayrıca belirtmek gerekir Distributor, DistributorSecurityModeve isteğe bağlı olarak DistributorLoginve DistributorPasswordAracısı işi ile ilgili meta verileri abonelik için kullanılamaz çünkü MSsubscription_properties.
Çekme abonelik birleştirme yayınına eşitlemek için
Abone bir bağlantı kullanarak oluşturmak ServerConnectionsınıf
Örneğini MergePullSubscriptionsınıf ve aşağıdaki özellikleri ayarlayın:
Abonelik veritabanı adı DatabaseName.
Abonelik ait olduğu için yayın adı PublicationName.
Yayımlanmış bir veritabanı için adı PublicationDBName.
Yayıncı adı PublisherName.
Adım 1'de oluşturduğunuz bağlantı ConnectionContext.
Arama LoadPropertieskalan abonelik özelliklerini almak için yöntem. Bu yöntem ise false, abonelik varolduğundan emin olun.
Birleştirme Aracısı abone adresindeki aşağıdaki yollardan biriyle başlatabilirsiniz:
Arama SynchronizeWithJobyöntemi örneği MergePullSubscriptiondan adım 2. Bu yöntem Birleştirme Aracısı zaman uyumsuz olarak başlar ve Aracısı iş çalışırken denetimi hemen uygulamanıza döndürür. Bu yöntem için çağrı yapamazsınız SQL Server 2005 Express Editionaboneler veya abonelik bir değeri ile oluşturulmuş olup olmadığını falseiçin CreateSyncAgentByDefault(varsayılan).
Bir örneğini elde MergeSynchronizationAgentitibaren sınıf SynchronizationAgentözelliği ve çağrı Synchronizeyöntemi. Bu yöntem zaman uyumlu olarak birleştirme aracı başlar ve denetim ile çalışan Aracısı iş kalır. Eşzamanlı yürütme sırasında idare StatusAracısı çalışırken olay.
[!NOT]
Bir değer belirtilmişse falseiçin CreateSyncAgentByDefault(varsayılan) çekme abonelik oluşturduğunuzda, Ayrıca belirtmek gerekir Distributor, DistributorSecurityMode, PublisherSecurityMode, HostName, SubscriptionType, ExchangeTypeve isteğe bağlı olarak DistributorLogin, DistributorPassword, PublisherLogin, ve PublisherPasswordAracısı işi ile ilgili meta verileri abonelik için kullanılamaz çünkü MSsubscription_properties.
Örnekler (rmo)
Bu örnek işlem yayınına çekme abonelik eşitler nerede aracı Aracısı işi eşzamansız kullanarak başlatılır.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksProductTran";
String publicationDbName = "AdventureWorks2012";
String subscriptionDbName = "AdventureWorks2012Replica";
// 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 = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
' 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 nereye ajan eş zamanlı başlatılan işlem yayınına çekme abonelik eşitler.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
// 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 insufficent 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 = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
' 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 insufficent 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 abonelik birleştirme yayınına eşitler nerede aracı Aracısı işi eşzamansız kullanarak başlatılır.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksSalesOrdersMerge";
String publicationDbName = "AdventureWorks2012";
String subscriptionDbName = "AdventureWorks2012Replica";
// 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 = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
' 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, bir çekme abonelik birleştirme yayınına nereye ajan eşzamanlı olarak başlatılır, eşitler.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
// 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 insufficent 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 = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
' 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 insufficent 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 abonelik birleştirme yayınına Web eşitlemeyi kullanarak eşitler. Abonelik Aracısı iş ve ilişkili abonelik meta veriler aracı eşzamanlı olarak başlatılmalıdır ve ek abonelik bilgileri temin oluşturuldu.
// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string distributorName = distributorInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
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 = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
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
[Top]