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) члены этого типа безопасны для потоков. Никакие члены экземпляра не гарантированы как потокобезопасные.