Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Managed Instance
Topik ini menjelaskan cara menyinkronkan langganan pull di SQL Server dengan menggunakan SQL Server Management Studio, agen replikasi, atau Objek Manajemen Replikasi (RMO).
Menggunakan SQL Server Management Studio
Langganan disinkronkan oleh Agen Distribusi (untuk rekam jepret dan replikasi transaksional) atau Agen Penggabungan (untuk replikasi penggabungan). Agen dapat berjalan terus menerus, berjalan sesuai permintaan, atau berjalan sesuai jadwal. Untuk informasi selengkapnya tentang menentukan jadwal sinkronisasi, lihat Menentukan Jadwal Sinkronisasi.
Sinkronkan langganan sesuai permintaan dari folder Langganan Lokal di SQL Server Management Studio.
Untuk menyinkronkan langganan pull sesuai permintaan di Management Studio
Sambungkan ke Pelanggan di Management Studio, lalu perluas simpul server.
Perluas folder Replikasi, lalu perluas folder Langganan Lokal.
Klik kanan langganan yang ingin Anda sinkronkan, lalu klik Tampilkan Status Sinkronisasi.
Dalam kotak dialog Lihat Status Sinkronisasi - <Subscriber>:<SubscriptionDatabase>, klik Mulai. Ketika sinkronisasi selesai, pesan Sinkronisasi selesai ditampilkan.
Klik Tutup.
Agen Replikasi
Langganan pull dapat disinkronkan secara terprogram dan sesuai permintaan dengan memanggil file eksekusi agen replikasi yang sesuai dari Command Prompt. File eksekusi agen replikasi yang dipanggil akan bergantung pada jenis publikasi yang menaungi langganan pull tersebut. Untuk informasi selengkapnya, lihat Agen Replikasi.
Catatan
Agen replikasi terhubung ke server lokal dengan menggunakan kredensial Autentikasi Windows milik pengguna yang menjalankan agen dari prompt perintah. Kredensial Windows ini juga digunakan saat menyambungkan ke server jarak jauh menggunakan Autentikasi Terintegrasi Windows.
Untuk memulai agen distribusi dari Command Prompt atau file batch
Dari command prompt atau dalam file batch, mulai Replication Distribution Agent dengan menjalankan distrib.exe, dengan menentukan argumen baris perintah berikut:
-Penerbit
-PublisherDB
-Distributor
-DistributorSecurityMode = 1
-Pelanggan
-SubscriberDB
= 1
-Jenis Langganan = 1
Jika Anda menggunakan Autentikasi SQL Server, Anda juga harus menentukan argumen berikut:
-DistributorLogin
-DistributorPassword
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-PublisherSecurityMode = 0
-SubscriberLogin
-SubscriberPassword
= 0
Untuk memulai agen penggabungan dari baris perintah atau dari berkas batch
Dari prompt perintah atau dalam file batch, mulai Agen Penggabungan Replikasi dengan menjalankan replmerg.exe, dengan menentukan argumen baris perintah berikut:
-Penerbit
-PublisherDB
-PublisherSecurityMode = 1
-Publikasi
-Distributor
-DistributorSecurityMode = 1
-Pelanggan
= 1
-SubscriberDB
-Jenis Langganan = 1
Jika Anda menggunakan Autentikasi SQL Server, Anda juga harus menentukan argumen berikut:
-DistributorLogin
-DistributorPassword
-DistributorSecurityMode = 0
-PublisherLogin
-PublisherPassword
-PublisherSecurityMode = 0
-SubscriberLogin
-SubscriberPassword
= 0
Contoh (Agen Replikasi)
Contoh berikut menjalankan Agen Distribusi untuk menyinkronkan langganan pull. Semua koneksi dibuat menggunakan Autentikasi Windows.
-- 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;
Contoh berikut menjalankan Agen Penggabungan untuk menyinkronkan langganan tarik. Semua koneksi dibuat menggunakan Autentikasi Windows.
-- 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 ;
Menggunakan Objek Manajemen Replikasi (RMO)
Anda dapat menyinkronkan langganan penarikan secara terprogram dengan menggunakan Objek Manajemen Replikasi (RMO) dan akses kode terkelola ke fungsionalitas agen replikasi. Kelas yang Anda gunakan untuk menyinkronkan langganan pull bergantung pada jenis publikasi yang menaungi langganan tersebut.
Catatan
Jika Anda ingin memulai sinkronisasi yang berjalan secara otonom tanpa memengaruhi aplikasi Anda, mulai agen secara asinkron. Namun, jika Anda ingin memantau hasil sinkronisasi dan menerima panggilan balik dari agen selama proses sinkronisasi (misalnya, untuk menampilkan bilah kemajuan), Anda harus memulai agen secara sinkron. Untuk Pelanggan edisi Microsoft SQL Server 2005 Express, Anda harus memulai agen secara sinkron.
Untuk menyinkronkan langganan penarikan ke rekam jepret atau publikasi transaksional
Buat koneksi ke Subscriber dengan menggunakan kelas ServerConnection.
Buat instans TransPullSubscription kelas, dan atur properti berikut:
Nama database langganan untuk DatabaseName.
Nama publikasi tempat langganan berada.PublicationName
Nama basis data publikasi untuk PublicationDBName.
Nama penerbit untuk PublisherName.
Koneksi yang dibuat di langkah 1 untuk ConnectionContext.
Panggil metode LoadProperties untuk mendapatkan properti langganan yang tersisa. Jika metode ini mengembalikan false, verifikasi bahwa langganan ada.
Mulai Agen Distribusi di Pelanggan dengan salah satu cara berikut:
Panggil metode SynchronizeWithJob pada instance TransPullSubscription dari langkah 2. Metode ini memulai Agen Distribusi secara asinkron, dan kontrol segera kembali ke aplikasi Anda saat pekerjaan agen berjalan. Anda tidak dapat memanggil metode ini untuk Pelanggan edisi Ekspres SQL Server 2005 atau jika langganan dibuat dengan nilai false untuk CreateSyncAgentByDefault (default).
Dapatkan instans kelas TransSynchronizationAgent dari properti SynchronizationAgent, lalu panggil metode Synchronize. Metode ini memulai agen secara sinkron, dan kendali tetap berada pada job agen yang sedang berjalan. Selama eksekusi sinkron, Anda dapat menangani peristiwa Status saat agen berjalan.
Catatan
Jika Anda menentukan nilai false untuk CreateSyncAgentByDefault (nilai default) saat membuat langganan pull, Anda juga perlu menentukan Distributor, DistributorSecurityMode, dan, secara opsional, DistributorLogin dan DistributorPassword karena metadata terkait pekerjaan agen untuk langganan tersebut tidak tersedia dalam MSsubscription_properties.
Untuk menyinkronkan langganan penarikan ke publikasi gabungan
Buat koneksi ke Subscriber dengan menggunakan kelas ServerConnection.
Buat instans MergePullSubscription kelas, dan atur properti berikut:
Nama database langganan untuk DatabaseName.
Nama publikasi tempat langganan berada.PublicationName
Nama database yang dipublikasikan untuk PublicationDBName.
Nama penerbit untuk PublisherName.
Koneksi yang dibuat di langkah 1 untuk ConnectionContext.
Panggil metode LoadProperties untuk mendapatkan properti langganan yang tersisa. Jika metode ini mengembalikan false, verifikasi bahwa langganan ada.
Mulai Merge Agent di Subscriber dengan salah satu cara berikut:
Panggil metode SynchronizeWithJob pada instance MergePullSubscription dari langkah 2. Metode ini memulai Agen Penggabungan secara asinkron, dan kontrol langsung dikembalikan ke aplikasi Anda saat tugas agen sedang berjalan. Anda tidak dapat memanggil metode ini untuk Pelanggan edisi Ekspres SQL Server 2005 atau jika langganan dibuat dengan nilai false untuk CreateSyncAgentByDefault (default).
Dapatkan instans kelas MergeSynchronizationAgent dari properti SynchronizationAgent, lalu panggil metode Synchronize. Metode ini memulai Agen Penggabungan secara sinkron, dan kontrol tetap berada pada tugas agen yang sedang berjalan. Selama eksekusi sinkron, Anda dapat menangani peristiwa Status saat agen berjalan.
Catatan
Jika Anda menentukan nilai false untuk CreateSyncAgentByDefault (default) saat membuat langganan pull, Anda juga perlu menentukan Distributor, DistributorSecurityMode, PublisherSecurityMode, HostName, SubscriptionType, ExchangeType, dan secara opsional DistributorLogin, DistributorPassword, PublisherLogin, dan PublisherPassword karena metadata terkait tugas agen untuk langganan tidak tersedia di MSsubscription_properties.
Contoh (RMO)
Contoh ini menyinkronkan langganan penarikan ke publikasi transaksional, di mana agen dimulai secara asinkron menggunakan pekerjaan agen.
// 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
Contoh ini menyinkronkan langganan pull dengan publikasi transaksional, dengan agen yang dijalankan secara sinkron.
// 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
Contoh ini menyinkronkan langganan penarikan ke publikasi gabungan, di mana agen dimulai secara asinkron menggunakan pekerjaan agen.
// 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
Contoh ini menyinkronkan langganan pull ke publikasi merge, dengan agen dijalankan secara sinkron.
// 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
Contoh ini menyinkronkan langganan penarikan ke publikasi gabungan menggunakan sinkronisasi Web. Langganan dibuat tanpa tugas agen dan metadata langganan terkait, sehingga agen harus dijalankan secara sinkron dan informasi langganan tambahan diberikan.
// 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