Поделиться через


MergeSynchronizationAgent Класс

Определение

Предоставляет функциональные возможности агента слияния репликации.

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 свойства для синхронизации принудительной подписки.

// 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 класса используется для синхронизации подписки на слияние. Так как подписка по запросу была создана с помощью значения false for CreateSyncAgentByDefault, необходимо указать дополнительные свойства.

// 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

Возвращает или задает число поколений, которые должны быть обработаны в одном пакете при загрузке изменений с издателя на подписчик. Поколение — это логическая группа изменений для статьи.

DynamicSnapshotLocation

Возвращает или задает расположение секционированного моментального снимка для данного подписчика.

ExchangeType

Возвращает или задает значение, определяющее, каким образом происходит обмен данными при синхронизации.

FileTransferType

Возвращает или задает способ передачи исходных файлов моментальных снимков подписчику.

HostName

Возвращает или задает значение, используемое агент слияния при вычислении параметризованного фильтра, использующего функцию HOST_NAME.

InputMessageFile

Возвращает или задает входной файл сообщения.

InternetLogin

Возвращает или задает имя входа, используемое с веб-синхронизацией при соединении с издателем посредством проверки подлинности через Интернет.

InternetPassword

Задает пароль для свойства InternetLogin, используемого с веб-синхронизацией при соединении с издателем с проверкой подлинности через Интернет.

InternetProxyLogin

Возвращает или задает имя входа, используемое с веб-синхронизацией при соединении с веб-сервером посредством прокси-сервера в Интернет.

InternetProxyPassword

Задает пароль для имени входа, используемого с веб-синхронизацией при соединении с веб-сервером посредством прокси-сервера в Интернет.

InternetProxyServer

Возвращает или задает имя входа прокси-сервера в Интернет, используемое с веб-синхронизацией при соединении с веб-сервером.

InternetSecurityMode

Возвращает или задает метод проверки подлинности HTTP, используемый при соединении с веб-сервером в течение веб-синхронизации.

InternetTimeout

Возвращает или задает время ожидания HTTP при соединении с веб-сервером.

InternetUrl

Возвращает или задает URL-адрес веб-службы, настроенной для веб-синхронизации.

LastUpdatedTime

Возвращает отметку времени последней синхронизации подписки агентом репликации.

LoginTimeout

Возвращает или задает максимальное количество секунд, в течение которых ожидается установка соединения.

MetadataRetentionCleanup

Возвращает или задает значение, указывающее, выполняется ли очистка метаданных.

Output

Возвращает или задает выходной файл агента.

OutputMessageFile

Возвращает или задает входной файл сообщения.

OutputVerboseLevel

Возвращает или задает уровень детализации данных, записываемых в выходной файл агента.

ProfileName

Возвращает или задает имя профиля, используемого агентом.

Publication

Возвращает или задает имя публикации.

Publisher

Возвращает или задает имя экземпляра Microsoft SQL Server, действующего в качестве издателя подписки.

PublisherAddress

Возвращает или задает сетевой адрес, используемый для подключения к издателю, если указано свойство PublisherNetwork.

PublisherChanges

Возвращает общее количество изменений в издателе, примененных к подписчику во время последней синхронизации.

PublisherConflicts

Возвращает общее количество конфликтов, возникших у издателя во время последней синхронизации.

PublisherDatabase

Возвращает или задает имя базы данных публикации.

PublisherEncryptedPassword

Возвращает или задает зашифрованный пароль издателя.

PublisherFailoverPartner

Возвращает или задает экземпляр партнера по отработке отказа SQL Server, участвующий в сеансе зеркального отображения базы данных с базой данных публикации.

PublisherLogin

Возвращает или задает имя входа, используемое при подключении к издателю с помощью проверки подлинности SQL Server.

PublisherNetwork

Возвращает или задает клиентскую сетевую библиотеку Net-Library при соединении с издателем.

PublisherPassword

Задает пароль, используемый при подключении к издателю с помощью проверки подлинности SQL Server.

PublisherSecurityMode

Возвращает или задает режим безопасности при соединении с издателем.

QueryTimeout

Возвращает или задает количество секунд, разрешенное для завершения внутренних запросов.

SecureDistributorEncryptedPassword

Возвращает или задает зашифрованный пароль безопасного распространителя.

SecurePublisherEncryptedPassword

Возвращает или задает зашифрованный пароль безопасного издателя.

SecureSubscriberEncryptedPassword

Возвращает или задает зашифрованный пароль безопасного подписчика.

Subscriber

Возвращает или задает имя экземпляра Microsoft SQL Server, действующего как подписчик.

SubscriberChanges

Возвращает общее количество изменений в подписчике, примененных к издателю во время последней синхронизации.

SubscriberConflicts

Возвращает общее количество конфликтов, возникших у издателя во время последней синхронизации.

SubscriberDatabase

Возвращает или задает имя базы данных подписки.

SubscriberDatabasePath

Возвращает или задает путь базы данных подписчика.

SubscriberDataSourceType

Возвращает или задает тип источника данных, используемого в качестве подписчика.

SubscriberEncryptedPassword

Возвращает или задает зашифрованный пароль подписчика.

SubscriberLogin

Возвращает или задает имя входа, используемое при подключении к подписчику с помощью проверки подлинности SQL Server.

SubscriberPassword

Задает пароль, используемый при подключении к подписчику с помощью проверки подлинности SQL Server.

SubscriberSecurityMode

Возвращает или задает режим безопасности при соединении с подписчиком.

SubscriptionType

Возвращает или задает значение, указывающее, является ли подписка принудительной или подпиской по запросу.

SyncToAlternate

Возвращает или задает значение, указывающее, выполняется ли синхронизация с альтернативным участником синхронизации.

UploadGenerationsPerBatch

Возвращает или задает число поколений, обрабатываемых в одном пакете при передаче изменений с подписчика на издатель. Поколение — это логическая группа изменений для статьи.

UseInteractiveResolver

Возвращает или задает значение, определяющее, используется ли интерактивный арбитр конфликтов во время проверки.

UseWebSynchronization

Возвращает или задает значение, указывающее, используется ли веб-синхронизация.

Validate

Возвращает или задает значение, указывающее, проводится ли проверка данных подписчика в конце процесса синхронизации.

WorkingDirectory

Возвращает или задает рабочий каталог, из которого осуществляется доступ к файлам моментальных снимков, когда используется протокол FTP.

Методы

Abort()

Прерывает синхронизацию.

ClearAllTraceFlags()

Очищает все флаги трассировки, используемые агентом синхронизации.

ClearTraceFlag(Int32)

Очищает флаг трассировки.

Dispose()

Освобождает неуправляемые ресурсы, занятые MergeSynchronizationAgent.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые классом MergeSynchronizationAgent , и при необходимости освобождает управляемые ресурсы.

EnableTraceFlag(Int32)

Включает флаг трассировки.

Finalize()

Завершает работу агента.

IsSnapshotRequired()

Соединяется с издателем или распространителем и подписчиком, чтобы определить, будет ли применяться новый моментальный снимок при следующей синхронизации агента.

ProcessMessagesAtPublisher()

Обрабатывает сообщения на издателе.

ProcessMessagesAtSubscriber()

Обрабатывает сообщения на подписчике.

Synchronize()

Запускает агент слияния для синхронизации подписки.

События

ComStatus

Возникает, когда агент слияния возвращает сведения о состоянии @@@команды@@@ синхронизации.

Status

Происходит, когда агент слияния возвращает сведения о состоянии синхронизации.

Применяется к

Потокобезопасность

Любые общедоступные статичные (общие в Visual Basic) члены этого типа являются потокобезопасными. Потокобезопасная работа с членами экземпляров типа не гарантируется.