Partilhar via


MergeSynchronizationAgent Classe

Definição

Fornece a funcionalidade do Replication Merge Agent.

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
Herança
MergeSynchronizationAgent
Atributos
Implementações

Exemplos

No exemplo a seguir, o Synchronize método é chamado na instância da MergeSynchronizationAgent classe que é acessada da SynchronizationAgent propriedade para sincronizar a assinatura 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

No exemplo a seguir, uma instância da MergeSynchronizationAgent classe é usada para sincronizar uma assinatura de mesclagem. Como a assinatura pull foi criada usando um valor para falseCreateSyncAgentByDefault, propriedades adicionais devem ser fornecidas.

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

Comentários

A MergeSynchronizationAgent classe dá suporte à capacidade de realizar as seguintes tarefas de replicação:

  • Sincronizar assinaturas.

  • Especifique se somente a fase de carregamento, apenas a fase de download ou ambas as fases são executadas durante a sincronização.

  • Valide se uma assinatura tem os dados esperados.

  • Especifique uma pasta de instantâneo diferente, da qual o instantâneo inicial de uma assinatura pode ser aplicado.

Construtores

MergeSynchronizationAgent()

Cria uma instância de MergeSynchronizationAgent classe.

Propriedades

AlternateSynchronizationPartnerCollection

Obtém os parceiros de sincronização alternativos para uma assinatura.

AltSnapshotFolder

Obtém ou define a pasta de instantâneo alternativo para a assinatura.

ComErrorCollection

Obtém uma coleção de erros gerada pelo agente de replicação.

Distributor

Obtém ou define o nome da instância do Microsoft SQL Server que está atuando como o Distribuidor para a assinatura.

DistributorAddress

Obtém ou define o endereço de rede usado para conectar-se ao Distribuidor quando a propriedade DistributorNetwork está especificada.

DistributorEncryptedPassword

Obtém ou define a senha criptografada do distribuidor.

DistributorLogin

Obtém ou define o nome de logon usado ao se conectar ao Distribuidor usando SQL Server Autenticação.

DistributorNetwork

Obtém ou define a Biblioteca de Rede cliente usada durante a conexão com o Distribuidor.

DistributorPassword

Define a senha usada ao se conectar ao Distribuidor usando SQL Server Autenticação.

DistributorSecurityMode

Obtém ou define o modo de segurança usado durante a conexão com o Distribuidor.

DownloadGenerationsPerBatch

Obtém ou define o número de gerações a ser processado em um único lote durante o download de alterações do Publicador para o Assinante. Uma geração está definida como um grupo lógico de alterações por artigo.

DynamicSnapshotLocation

Obtém ou define o local do instantâneo particionado para este Assinante.

ExchangeType

Obtém ou define o modo como os dados são trocados durante a sincronização.

FileTransferType

Obtém ou define o modo como os arquivos de instantâneo iniciais são transferidos para o Assinante.

HostName

Obtém ou define o valor usado pelo Agente de Mesclagem quando ele avalia um filtro parametrizado que usa a função HOST_NAME.

InputMessageFile

Obtém ou define o arquivo da mensagem de entrada.

InternetLogin

Obtém ou define o nome de logon usado com a sincronização da Web durante a conexão com o Publicador usando a autenticação da Internet.

InternetPassword

Define a senha para a propriedade InternetLogin, usada com a sincronização da Web durante a conexão com o Publicador usando a autenticação da Internet.

InternetProxyLogin

Obtém ou define o nome de logon usado com a sincronização da Web durante a conexão com o servidor Web usando um servidor proxy da Internet.

InternetProxyPassword

Define a senha para o logon usado com a sincronização da Web durante a conexão com o servidor Web usando um servidor proxy da Internet.

InternetProxyServer

Obtém ou define o nome do servidor proxy da Internet usado com a sincronização da Web durante a conexão com o servidor Web.

InternetSecurityMode

Obtém ou define o método de autenticação HTTP usado durante a conexão com o servidor Web durante a sincronização da Web.

InternetTimeout

Obtém ou define o tempo limite de HTTP durante a conexão com o servidor Web.

InternetUrl

Obtém ou define a URL do serviço Web configurado para sincronização da Web.

LastUpdatedTime

Obtém o carimbo de data/hora do último horário em que o agente de replicação sincronizou a assinatura.

LoginTimeout

Obtém ou define o número máximo de segundos de espera até que as conexões sejam estabelecidas.

MetadataRetentionCleanup

Obtém ou define se os metadados devem ser limpos.

Output

Obtém ou define o arquivo de saída de agente.

OutputMessageFile

Obtém ou define o arquivo da mensagem de entrada.

OutputVerboseLevel

Obtém ou define o nível de detalhes das informações gravadas no arquivo de saída do agente.

ProfileName

Obtém ou define o nome do perfil usado pelo agente.

Publication

Obtém ou define o nome da publicação.

Publisher

Obtém ou define o nome da instância do Microsoft SQL Server que corresponde ao Publicador para a assinatura.

PublisherAddress

Obtém ou define o endereço de rede usado para conectar ao Publicador quando a propriedade PublisherNetwork é especificada.

PublisherChanges

Obtém o número total de alterações de Publicador que foram se aplicadas ao Assinante durante a última sincronização.

PublisherConflicts

Obtém o número total de conflitos que ocorreram no Publicador durante a última sincronização.

PublisherDatabase

Obtém ou define o nome do banco de dados de publicação.

PublisherEncryptedPassword

Obtém ou define a senha criptografada do publicador.

PublisherFailoverPartner

Obtém ou define a instância do parceiro de failover de SQL Server que está participando de uma sessão de espelhamento de banco de dados com o banco de dados de publicação.

PublisherLogin

Obtém ou define o nome de logon usado ao se conectar ao Publicador usando SQL Server Autenticação.

PublisherNetwork

Obtém ou define a Biblioteca de Rede cliente usada durante a conexão com o Publicador.

PublisherPassword

Define a senha usada ao se conectar ao Publicador usando SQL Server Autenticação.

PublisherSecurityMode

Obtém ou define o modo de segurança usado durante a conexão com o Publicador.

QueryTimeout

Obtém ou define o número de segundos permitidos para a conclusão de consultas internas.

SecureDistributorEncryptedPassword

Obtém ou define a senha criptografada do distribuidor seguro.

SecurePublisherEncryptedPassword

Obtém ou define a senha criptografada do publicador seguro.

SecureSubscriberEncryptedPassword

Obtém ou define a senha criptografada do assinante seguro.

Subscriber

Obtém ou define o nome da instância do Microsoft SQL Server que corresponde ao Assinante.

SubscriberChanges

Obtém o número total de alterações de Assinante que foram se aplicadas ao Publicador durante a última sincronização.

SubscriberConflicts

Obtém o número total de conflitos que ocorreram no Publicador durante a última sincronização.

SubscriberDatabase

Obtém ou define o nome do banco de dados de assinatura.

SubscriberDatabasePath

Obtém ou define o caminho do banco de dados do assinante.

SubscriberDataSourceType

Obtém ou define o tipo de fonte de dados usado como o Assinante.

SubscriberEncryptedPassword

Obtém ou define a senha criptografada do assinante.

SubscriberLogin

Obtém ou define o nome de logon usado ao se conectar ao Assinante usando SQL Server Autenticação.

SubscriberPassword

Define a senha usada ao se conectar ao Assinante usando SQL Server Autenticação.

SubscriberSecurityMode

Obtém ou define o modo de segurança usado durante a conexão com o Assinante.

SubscriptionType

Obtém ou define se a assinatura é push ou pull.

SyncToAlternate

Obtém ou define se a sincronização é feita para um parceiro de sincronização alternativo.

UploadGenerationsPerBatch

Obtém ou define o número de gerações a ser processado em um único lote durante o carregamento de alterações do Assinante para o Publicador. Uma geração está definida como um grupo lógico de alterações por artigo.

UseInteractiveResolver

Obtém ou define se o resolvedor interativo é usado durante a reconciliação.

UseWebSynchronization

Obtém ou define se a sincronização da Web é usada.

Validate

Obtém ou define se validação de dados é executada nos dados de Assinante ao fim da sincronização.

WorkingDirectory

Obtém ou define o diretório de trabalho a partir do qual são acessados arquivos de instantâneo quando o FTP é usado.

Métodos

Abort()

Anula a sincronização.

ClearAllTraceFlags()

Desmarca todos os sinalizadores de rastreamento usados pelo agente de sincronização.

ClearTraceFlag(Int32)

Limpa um sinalizador de rastreamento.

Dispose()

Libera todos os recursos não gerenciados usados pelo MergeSynchronizationAgent.

Dispose(Boolean)

Libera os recursos não gerenciados usados pela MergeSynchronizationAgent classe e, opcionalmente, libera os recursos gerenciados.

EnableTraceFlag(Int32)

Habilita o rastreamento de sinalizador.

Finalize()

Finaliza o agente.

IsSnapshotRequired()

Conecta ao Publicador ou Distribuidor e ao Assinante para determinar se um novo instantâneo será aplicado durante a próxima sincronização de agente.

ProcessMessagesAtPublisher()

Processa as mensagens no publicador.

ProcessMessagesAtSubscriber()

Processa as mensagens no assinante.

Synchronize()

Inicia o Agente de Mesclagem para sincronizar a assinatura.

Eventos

ComStatus

Ocorre quando o Agente de Mesclagem retorna informações de status Com da sincronização.

Status

Ocorre quando o Agente de Mesclagem retorna informações de status de sincronização.

Aplica-se a

Acesso thread-safe

Qualquer membro estático público (Shared no Visual Basic) desse tipo é seguro para threads. Não há garantia de que qualquer membro de instância seja seguro para threads.