MergeSynchronizationAgent Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обеспечивает функциональность Replication агент слияния.
public ref class MergeSynchronizationAgent : MarshalByRefObject, IDisposable, Microsoft::SqlServer::Replication::IMergeSynchronizationAgent
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Runtime.InteropServices.ComSourceInterfaces(typeof(Microsoft.SqlServer.Replication.IComStatusEvent))]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.Guid("ee5ee47e-6d29-448f-b2d2-f8e632db336a")]
public class MergeSynchronizationAgent : MarshalByRefObject, IDisposable, Microsoft.SqlServer.Replication.IMergeSynchronizationAgent
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)>]
[<System.Runtime.InteropServices.ComSourceInterfaces(typeof(Microsoft.SqlServer.Replication.IComStatusEvent))>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Runtime.InteropServices.Guid("ee5ee47e-6d29-448f-b2d2-f8e632db336a")>]
type MergeSynchronizationAgent = class
inherit MarshalByRefObject
interface IDisposable
interface IMergeSynchronizationAgent
Public Class MergeSynchronizationAgent
Inherits MarshalByRefObject
Implements IDisposable, IMergeSynchronizationAgent
- Наследование
-
MergeSynchronizationAgent
- Атрибуты
- Реализации
Примеры
В следующем примере Synchronize метод вызывается на экземпляре MergeSynchronizationAgent класса, к которому доступен из свойства SynchronizationAgent , для синхронизации push-подписки.
// 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 Publisher.
ServerConnection conn = new ServerConnection(publisherName);
MergeSubscription subscription;
try
{
// Connect to the Publisher
conn.Connect();
// Define the subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = publicationDbName;
subscription.PublicationName = publicationName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.SubscriberName = subscriberName;
// If the push subscription exists, start the synchronization.
if (subscription.LoadProperties())
{
// Check that we have enough metadata to start the agent.
if (subscription.SubscriberSecurity != 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 push subscription does not exist.
throw new ApplicationException(String.Format(
"The 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.", 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 Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Dim subscription As MergeSubscription
Try
' Connect to the Publisher
conn.Connect()
' Define the subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = publicationDbName
subscription.PublicationName = publicationName
subscription.SubscriptionDBName = subscriptionDbName
subscription.SubscriberName = subscriberName
' If the push subscription exists, start the synchronization.
If subscription.LoadProperties() Then
' Check that we have enough metadata to start the agent.
If Not subscription.SubscriberSecurity Is Nothing Then
' Synchronously start the Merge Agent for the subscription.
' Log agent messages to an output file.
subscription.SynchronizationAgent.Output = "mergeagent.log"
subscription.SynchronizationAgent.OutputVerboseLevel = 2
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 push subscription does not exist.
Throw New ApplicationException(String.Format( _
"The 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.", ex)
Finally
conn.Disconnect()
End Try
В следующем примере экземпляр MergeSynchronizationAgent класса используется для синхронизации подписки на слияние. Поскольку pull подписка была создана с использованием значения для falseCreateSyncAgentByDefault, необходимо предоставить дополнительные свойства.
// 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
Комментарии
Класс MergeSynchronizationAgent поддерживает возможность выполнять следующие задачи по репликации:
Синхронизируйте подписки.
Укажите, выполняются ли только фаза загрузки, только фаза загрузки или обе фазы синхронизации.
Проверьте, что подписка содержит ожидаемые данные.
Укажите другую папку с снимком, из которой можно применить первоначальный снимок для подписки.
Конструкторы
| Имя | Описание |
|---|---|
| MergeSynchronizationAgent() |
Создает экземпляр класса MergeSynchronizationAgent. |
Свойства
| Имя | Описание |
|---|---|
| AlternateSynchronizationPartnerCollection |
Получает альтернативных партнёров по синхронизации по подписке. |
| AltSnapshotFolder |
Получает или устанавливает альтернативную папку снимков для подписки. |
| ComErrorCollection |
Получает набор ошибок, сгенерированных агентом репликации. |
| Distributor |
Получает или устанавливает имя экземпляра Microsoft SQL Server, который выступает в роли дистрибьютора подписки. |
| DistributorAddress |
Получает или устанавливает сетевой адрес, который используется для подключения к Дистрибьютору при указании свойства DistributorNetwork . |
| DistributorEncryptedPassword |
Получает или устанавливает зашифрованный пароль для дистрибьютора. |
| DistributorLogin |
Получает или устанавливает имя входа, используемое при подключении к Дистрибьютору с помощью аутентификации SQL Server. |
| DistributorNetwork |
Получает или устанавливает клиентский Net-Library, который используется при подключении к дистрибьютору. |
| DistributorPassword |
Устанавливает пароль, используемый при подключении к дистрибьютору с помощью аутентификации SQL Server. |
| DistributorSecurityMode |
Получает или устанавливает режим безопасности, используемый при подключении к дистрибьютору. |
| DownloadGenerationsPerBatch |
Получает или устанавливает количество поколений для обработки в одной партии при скачивании изменений от Publisher к Subscriber. Поколение — это логическая группа изменений для статьи. |
| DynamicSnapshotLocation |
Получает или устанавливает расположение разбитого снимка для этого абонента. |
| ExchangeType |
Определяет, как данные обмениваются во время синхронизации. |
| FileTransferType |
Получает или задаёт, как исходные файлы снимков передаются абоненту. |
| HostName |
Получает или устанавливает значение, используемое агент слияния при вычислении параметризованного фильтра, использующего функцию HOST_NAME. |
| InputMessageFile |
Получает или устанавливает файл вводного сообщения. |
| InternetLogin |
Получает или устанавливает имя входа, используемое при веб-синхронизации при подключении к Publisher с помощью интернет-аутентификации. |
| InternetPassword |
Устанавливает пароль для InternetLogin свойства, используемого при веб-синхронизации при подключении к Publisher с помощью интернет-аутентификации. |
| InternetProxyLogin |
Получает или устанавливает имя входа, используемое при веб-синхронизации при подключении к веб-серверу с помощью интернет-прокси-сервера. |
| InternetProxyPassword |
Устанавливает пароль для входа, который используется с веб-синхронизацией при подключении к веб-серверу с помощью интернет-прокси-сервера. |
| InternetProxyServer |
Получает или устанавливает имя интернет-прокси-сервера, который используется с веб-синхронизацией при подключении к веб-серверу. |
| InternetSecurityMode |
Получает или устанавливает метод HTTP-аутентификации, который используется при подключении к веб-серверу во время веб-синхронизации. |
| InternetTimeout |
Получает или устанавливает тайм-аут HTTP при подключении к веб-серверу. |
| InternetUrl |
Получает или устанавливает URL веб-сервиса, настроенного для веб-синхронизации. |
| LastUpdatedTime |
Получает временную метку последнего раза, когда этот агент синхронизировал подписку. |
| LoginTimeout |
Получает или устанавливает максимальное количество секунд для ожидания установления соединений. |
| MetadataRetentionCleanup |
Получите или определите, нужно ли очищать метаданные. |
| Output |
Получает или устанавливает файл выхода агента. |
| OutputMessageFile |
Получает или устанавливает файл вводного сообщения. |
| OutputVerboseLevel |
Получает или задаёт уровень детализации информации, записываемой в файл выхода агента. |
| ProfileName |
Получает или устанавливает имя профиля, используемого агентом. |
| Publication |
Получает или устанавливает название издания. |
| Publisher |
Получает или устанавливает имя экземпляра Microsoft SQL Server, который является Publisher для подписки. |
| PublisherAddress |
Получает или устанавливает сетевой адрес, который используется для подключения к Publisher при указании свойстваPublisherNetwork. |
| PublisherChanges |
Получает общее количество изменений Publisher, которые были применены у подписчика во время последней синхронизации. |
| PublisherConflicts |
Получает общее количество конфликтов, которые произошли у Publisher во время последней синхронизации. |
| PublisherDatabase |
Получает или устанавливает название базы данных публикаций. |
| PublisherEncryptedPassword |
Получает или устанавливает пароль, зашифрованный издателем. |
| PublisherFailoverPartner |
Получает или устанавливает резервный партнер SQL Server, который участвует в сессии зеркалирования базы данных с базой публикации. |
| PublisherLogin |
Получает или устанавливает имя входа, используемое при подключении к Publisher с помощью аутентификации SQL Server. |
| PublisherNetwork |
Получает или устанавливает клиентский Net-Library, который используется при подключении к Publisher. |
| PublisherPassword |
Устанавливает пароль, используемый при подключении к Publisher, с помощью аутентификации SQL Server. |
| PublisherSecurityMode |
Получает или устанавливает режим безопасности, который используется при подключении к Publisher. |
| QueryTimeout |
Получает или устанавливает количество секунд, позволяемых завершить внутренние запросы. |
| SecureDistributorEncryptedPassword |
Получает или устанавливает зашифрованный пароль для защищённого дистрибьютора. |
| SecurePublisherEncryptedPassword |
Получает или устанавливает зашифрованный пароль издателя. |
| SecureSubscriberEncryptedPassword |
Получает или устанавливает зашифрованный пароль для защищённого абонента. |
| Subscriber |
Получает или устанавливает имя экземпляра Microsoft SQL Server, который является подписчиком. |
| SubscriberChanges |
Получает общее количество изменений подписчика, которые были применены у Publisher во время последней синхронизации. |
| SubscriberConflicts |
Получает общее количество конфликтов, которые произошли у Publisher во время последней синхронизации. |
| SubscriberDatabase |
Получает или устанавливает имя базы данных подписок. |
| SubscriberDatabasePath |
Получает или устанавливает путь базы данных абонентов. |
| SubscriberDataSourceType |
Получает или устанавливает тип источника данных, используемого в качестве подписчика. |
| SubscriberEncryptedPassword |
Получает или устанавливает пароль, зашифрованный абонентом. |
| SubscriberLogin |
Получает или устанавливает имя входа, используемое при подключении к абоненту с помощью аутентификации SQL Server. |
| SubscriberPassword |
Устанавливает пароль, используемый при подключении к абоненту, с помощью аутентификации SQL Server. |
| SubscriberSecurityMode |
Получает или устанавливает режим безопасности, используемый при подключении к абоненту. |
| SubscriptionType |
Определяет, является ли подписка push или pull. |
| SyncToAlternate |
Получает или устанавливает, происходит ли синхронизация с альтернативным партнёром по синхронизации. |
| UploadGenerationsPerBatch |
Получает или устанавливает количество поколений, которые нужно обрабатывать в одной партии, при этом загружая изменения от подписчика к Publisher. Поколение — это логическая группа изменений для статьи. |
| UseInteractiveResolver |
Определяет или устанавливает, используется ли интерактивный резолвер во время сверки. |
| UseWebSynchronization |
Определяет, используется ли веб-синхронизация. |
| Validate |
Определяет, проводится ли проверка данных Абонента в конце синхронизации. |
| WorkingDirectory |
Получает или устанавливает рабочую директорию, из которой получают доступ к файлам снимков при использовании FTP. |
Методы
| Имя | Описание |
|---|---|
| Abort() |
Прерывает синхронизацию. |
| ClearAllTraceFlags() |
Удаляет все флаги трассировки, используемые агентом синхронизации. |
| ClearTraceFlag(Int32) |
Очищает флаг следа. |
| Dispose() |
Освобождает неуправляемые ресурсы, используемые MergeSynchronizationAgent. |
| Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые MergeSynchronizationAgent классом, а по желанию — управляемые ресурсы. |
| EnableTraceFlag(Int32) |
Активирует трассировку флагов. |
| Finalize() |
Окончательно определяет агента. |
| IsSnapshotRequired() |
Подключается к Publisher или Distributor и Subscriber, чтобы определить, будет ли новый snapshot применён во время следующей синхронизации агента. |
| ProcessMessagesAtPublisher() |
Обрабатывает сообщения в издательстве. |
| ProcessMessagesAtSubscriber() |
Обрабатывает сообщения у абонента. |
| Synchronize() |
Запускает агент слияния для синхронизации подписки. |
События
| Имя | Описание |
|---|---|
| ComStatus |
Возникает, когда агент слияния возвращает информацию о статусе синхронизации Com. |
| Status |
Возникает, когда агент слияния возвращает информацию о статусе синхронизации. |
Применяется к
Потокобезопасность
Любые публичные статические (Shared in Visual Basic) члены этого типа безопасны для потоков. Никакие члены экземпляра не гарантированы как потокобезопасные.