MergeSynchronizationAgent Classe

Definição

Fornece a funcionalidade do Replication Agente de Mesclagem.

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 a partir 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 fusão. Como a assinatura pull foi criada usando um valor de false para CreateSyncAgentByDefault, 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 suporta a capacidade de realizar as seguintes tarefas de replicação:

  • Sincronize assinaturas.

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

  • Valide que uma assinatura tem os dados esperados.

  • Especifique uma pasta de snapshots diferente, a partir da qual o snapshot inicial para uma assinatura possa ser aplicado.

Construtores

Nome Description
MergeSynchronizationAgent()

Cria uma instância de MergeSynchronizationAgent classe.

Propriedades

Nome Description
AlternateSynchronizationPartnerCollection

Recebe os parceiros alternativos de sincronização para uma assinatura.

AltSnapshotFolder

Obtém ou configura a pasta de snapshots alternativos para a assinatura.

ComErrorCollection

Recebe uma coleção de erros gerados pelo agente de replicação.

Distributor

Recebe ou define o nome da instância do Microsoft SQL Server que atua como distribuidora da assinatura.

DistributorAddress

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

DistributorEncryptedPassword

Obtém ou configura a senha criptografada do distribuidor.

DistributorLogin

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

DistributorNetwork

Recebe ou define a Net-Library cliente que é usada ao se conectar ao Distribuidor.

DistributorPassword

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

DistributorSecurityMode

Recebe ou define o modo de segurança usado ao se conectar ao Distribuidor.

DownloadGenerationsPerBatch

Recebe ou define o número de gerações a serem processadas em um único lote enquanto baixa as alterações do Publisher para o Assinante. Uma geração está definida como um grupo lógico de alterações por artigo.

DynamicSnapshotLocation

Obtém ou define a localização do snapshot particionado para esse assinante.

ExchangeType

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

FileTransferType

Obtém ou define como os arquivos snapshot iniciais são transferidos para o Assinante.

HostName

Recebe ou define o valor usado pelo Agente de Mesclagem quando avalia um filtro parametrizado que utiliza a função HOST_NAME.

InputMessageFile

Recebe ou define o arquivo de mensagem de entrada.

InternetLogin

Obtém ou define o nome de login usado com a sincronização Web ao se conectar ao Publisher usando autenticação na Internet.

InternetPassword

Define a senha para a InternetLogin propriedade usada na sincronização Web ao se conectar ao Publisher usando autenticação na Internet.

InternetProxyLogin

Obtém ou define o nome de login usado com a sincronização Web ao se conectar ao servidor Web usando um servidor proxy da Internet.

InternetProxyPassword

Define a senha do login usado com a sincronização Web ao se conectar ao servidor Web usando um servidor proxy da Internet.

InternetProxyServer

Obtém ou define o nome do servidor proxy da Internet que é usado com a sincronização Web ao se conectar ao servidor Web.

InternetSecurityMode

Obtém ou define o método de autenticação HTTP que é usado ao se conectar ao servidor Web durante a sincronização Web.

InternetTimeout

Recebe ou define o tempo de espera HTTP ao se conectar ao servidor Web.

InternetUrl

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

LastUpdatedTime

Recebe o carimbo de data da última vez que o agente de replicação sincronizou a assinatura.

LoginTimeout

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

MetadataRetentionCleanup

Obtenha ou define se deve limpar metadados.

Output

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

OutputMessageFile

Recebe ou define o arquivo de mensagem de entrada.

OutputVerboseLevel

Obtém ou define o nível de detalhe da informação que é escrita no arquivo de saída do agente.

ProfileName

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

Publication

Recebe ou define o nome da publicação.

Publisher

Recebe ou define o nome da instância do Microsoft SQL Server que é o Publisher da assinatura.

PublisherAddress

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

PublisherChanges

Recebe o número total de alterações no Publisher que foram aplicadas no assinante durante a última sincronização.

PublisherConflicts

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

PublisherDatabase

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

PublisherEncryptedPassword

Obtém ou define a senha criptografada do publisher.

PublisherFailoverPartner

Obtém ou configura a instância do parceiro de failover do 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 login usado ao se conectar ao Publisher usando a Autenticação do SQL Server.

PublisherNetwork

Obtém ou define o Net-Library cliente que é usado ao conectar ao Publisher.

PublisherPassword

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

PublisherSecurityMode

Obtém ou configura o modo de segurança usado ao se conectar ao Publisher.

QueryTimeout

Obtém ou define o número de segundos permitidos para que as consultas internas sejam concluídas.

SecureDistributorEncryptedPassword

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

SecurePublisherEncryptedPassword

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

SecureSubscriberEncryptedPassword

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

Subscriber

Recebe ou define o nome da instância do Microsoft SQL Server que é o Assinante.

SubscriberChanges

Recebe o número total de alterações de assinantes que foram aplicadas no Publisher durante a última sincronização.

SubscriberConflicts

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

SubscriberDatabase

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

SubscriberDatabasePath

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

SubscriberDataSourceType

Obtém ou define o tipo de fonte de dados que é usada como assinante.

SubscriberEncryptedPassword

Obtém ou define a senha criptografada do assinante.

SubscriberLogin

Obtém ou define o nome de login usado ao se conectar ao assinante usando a Autenticação SQL Server.

SubscriberPassword

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

SubscriberSecurityMode

Recebe ou define o modo de segurança usado ao se conectar ao assinante.

SubscriptionType

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

SyncToAlternate

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

UploadGenerationsPerBatch

Recebe ou define o número de gerações a serem processadas em um único lote ao fazer o upload das alterações do Assinante para o Publisher. 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 Web é usada.

Validate

Obtém ou define se a validação dos dados é realizada nos dados do assinante ao final da sincronização.

WorkingDirectory

Obtém ou define o diretório de funcionamento a partir do qual os arquivos snapshot são acessados quando o FTP é usado.

Métodos

Nome Description
Abort()

Aborta a sincronização.

ClearAllTraceFlags()

Limpa todas as flags de traço usadas pelo agente de sincronização.

ClearTraceFlag(Int32)

Libera uma bandeira de rastreamento.

Dispose()

Libera os recursos não gerenciados que são usados por MergeSynchronizationAgent.

Dispose(Boolean)

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

EnableTraceFlag(Int32)

Ativa o rastreamento de bandeiras.

Finalize()

Finaliza o agente.

IsSnapshotRequired()

Conecta-se ao Publisher ou Distribuidor e ao Assinante para determinar se um novo snapshot será aplicado durante a próxima sincronização do agente.

ProcessMessagesAtPublisher()

Processa as mensagens no editor.

ProcessMessagesAtSubscriber()

Processa as mensagens no assinante.

Synchronize()

Inicia o Agente de Mesclagem para sincronizar a assinatura.

Eventos

Nome Description
ComStatus

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

Status

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

Aplica-se a

Acesso thread-safe

Qualquer membro público estático (Compartilhado no Visual Basic) desse tipo é seguro para threads. Não há garantia de que quaisquer membros de instância sejam thread-safe.