MergeSynchronizationAgent Clase

Definición

Proporciona la funcionalidad del Agente de mezcla de replicación.

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
Herencia
MergeSynchronizationAgent
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente, se llama al Synchronize método en la instancia de la clase a la MergeSynchronizationAgent que se tiene acceso desde la SynchronizationAgent propiedad para sincronizar la suscripción de inserción.

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

En el ejemplo siguiente, se usa una instancia de la MergeSynchronizationAgent clase para sincronizar una suscripción de mezcla. Dado que la suscripción de extracción se creó mediante un valor de false para CreateSyncAgentByDefault, se deben proporcionar propiedades adicionales.

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

Comentarios

La MergeSynchronizationAgent clase admite la capacidad de realizar las siguientes tareas de replicación:

  • Sincronizar suscripciones.

  • Especifique si solo se ejecuta la fase de carga, solo la fase de descarga o ambas fases durante la sincronización.

  • Compruebe que una suscripción tiene los datos esperados.

  • Especifique una carpeta de instantáneas diferente, a partir de la cual se puede aplicar la instantánea inicial de una suscripción.

Constructores

MergeSynchronizationAgent()

Crea una instancia de la clase MergeSynchronizationAgent.

Propiedades

AlternateSynchronizationPartnerCollection

Obtiene los socios de sincronización alternativos para una suscripción.

AltSnapshotFolder

Obtiene o establece la carpeta de instantáneas alternativa para la suscripción.

ComErrorCollection

Obtiene una colección de errores que genera el agente de replicación.

Distributor

Obtiene o establece el nombre de la instancia de Microsoft SQL Server que actúa como distribuidor de la suscripción.

DistributorAddress

Obtiene o establece la dirección de red que se utiliza para la conexión al distribuidor cuando se especifica la propiedad DistributorNetwork.

DistributorEncryptedPassword

Obtiene o establece la contraseña cifrada del distribuidor.

DistributorLogin

Obtiene o establece el nombre de inicio de sesión que se usa al conectarse al distribuidor mediante SQL Server autenticación.

DistributorNetwork

Obtiene o establece la biblioteca de red de clientes que se usa para la conexión al distribuidor.

DistributorPassword

Establece la contraseña que se usa al conectarse al distribuidor mediante SQL Server autenticación.

DistributorSecurityMode

Obtiene o establece el modo de seguridad que se utiliza para la conexión al distribuidor.

DownloadGenerationsPerBatch

Obtiene o establece el número de generaciones que se va a procesar en un lote único mientras se descargan los cambios desde el publicador al suscriptor. Una generación se define como un grupo lógico de cambios por artículo.

DynamicSnapshotLocation

Obtiene o establece la ubicación de la instantánea con particiones para este suscriptor.

ExchangeType

Obtiene o establece cómo se intercambian los datos durante la sincronización.

FileTransferType

Obtiene o establece cómo se transfieren al suscriptor los archivos de la instantánea inicial.

HostName

Obtiene o establece el valor usado por el Agente de mezcla cuando evalúa un filtro con parámetros que usa la función HOST_NAME.

InputMessageFile

Obtiene o establece el archivo de mensajes de entrada.

InternetLogin

Obtiene o establece el nombre de inicio de sesión que se usa con la sincronización web para la conexión al publicador utilizando la autenticación de Internet.

InternetPassword

Establece la contraseña de la propiedad InternetLogin que se usa con la sincronización web para la conexión al publicador utilizando la autenticación de Internet.

InternetProxyLogin

Obtiene o establece el nombre de inicio de sesión que se usa con la sincronización web para la conexión al servidor web mediante un servidor proxy de Internet.

InternetProxyPassword

Establece la contraseña de inicio de sesión que se usa con la sincronización web para la conexión al servidor web mediante un servidor proxy de Internet.

InternetProxyServer

Obtiene o establece el nombre del servidor proxy de Internet que se usa con la sincronización web para la conexión al servidor web.

InternetSecurityMode

Obtiene o establece el método de autenticación de HTTP usado para la conexión al servidor web durante la sincronización web.

InternetTimeout

Obtiene o establece el tiempo de espera de HTTP para la conexión al servidor web.

InternetUrl

Obtiene o establece la dirección URL del servicio web que se configura para la sincronización web.

LastUpdatedTime

Obtiene la marca de tiempo de la última vez que el agente de replicación sincronizó la suscripción.

LoginTimeout

Obtiene o establece el número máximo de segundos de espera para que se establezcan las conexiones.

MetadataRetentionCleanup

Obtiene o establece si limpian los metadatos.

Output

Obtiene o establece el archivo de salida del agente.

OutputMessageFile

Obtiene o establece el archivo de mensajes de entrada.

OutputVerboseLevel

Obtiene o establece el nivel de detalle de información que se escribe en el archivo de salida del agente.

ProfileName

Obtiene o establece el nombre del perfil usado por el agente.

Publication

Obtiene o establece el nombre de la publicación.

Publisher

Obtiene o establece el nombre de la instancia de Microsoft SQL Server que actúa como publicador de la suscripción.

PublisherAddress

Obtiene o establece la dirección de red que se usa para la conexión al publicador cuando se especifica la propiedad PublisherNetwork.

PublisherChanges

Obtiene el número total de cambios del publicador que se aplicaron en el suscriptor durante la última sincronización.

PublisherConflicts

Obtiene el número total de conflictos que produjeron en el publicador durante la última sincronización.

PublisherDatabase

Obtiene o establece el nombre de la base de datos de publicación.

PublisherEncryptedPassword

Obtiene o establece la contraseña cifrada del publicador.

PublisherFailoverPartner

Obtiene o establece la instancia de asociado de conmutación por error de SQL Server que participa en una sesión de creación de reflejo de la base de datos con la base de datos de publicación.

PublisherLogin

Obtiene o establece el nombre de inicio de sesión que se usa al conectarse al publicador mediante SQL Server Autenticación.

PublisherNetwork

Obtiene o establece la biblioteca de red de clientes que se usa para la conexión al publicador.

PublisherPassword

Establece la contraseña que se usa al conectarse al publicador mediante la autenticación SQL Server.

PublisherSecurityMode

Obtiene o establece el modo de seguridad que se utiliza para la conexión al publicador.

QueryTimeout

Obtiene o establece el número de segundos que se conceden a las consultas internas para finalizar.

SecureDistributorEncryptedPassword

Obtiene o establece la contraseña cifrada del distribuidor seguro.

SecurePublisherEncryptedPassword

Obtiene o establece la contraseña cifrada segura del publicador.

SecureSubscriberEncryptedPassword

Obtiene o establece la contraseña cifrada segura del suscriptor.

Subscriber

Obtiene o establece el nombre de la instancia de Microsoft SQL Server que es el suscriptor.

SubscriberChanges

Obtiene el número total de cambios del suscriptor que se aplicaron en el publicador durante la última sincronización.

SubscriberConflicts

Obtiene el número total de conflictos que produjeron en el publicador durante la última sincronización.

SubscriberDatabase

Obtiene o establece el nombre de la base de datos de suscripciones.

SubscriberDatabasePath

Obtiene o establece la ruta de acceso de la base de datos del suscriptor.

SubscriberDataSourceType

Obtiene o establece el tipo de origen de datos que se utiliza como suscriptor.

SubscriberEncryptedPassword

Obtiene o establece la contraseña cifrada del suscriptor.

SubscriberLogin

Obtiene o establece el nombre de inicio de sesión que se usa al conectarse al suscriptor mediante SQL Server Autenticación.

SubscriberPassword

Establece la contraseña que se usa al conectarse al suscriptor mediante la autenticación SQL Server.

SubscriberSecurityMode

Obtiene o establece el modo de seguridad que se utiliza para la conexión al suscriptor.

SubscriptionType

Obtiene o establece si la suscripción es de inserción o de extracción.

SyncToAlternate

Obtiene o establece si la sincronización se realiza con un asociado de sincronización alternativo.

UploadGenerationsPerBatch

Obtiene o establece el número de generaciones que se va a procesar en un lote único mientras se cargan los cambios desde el suscriptor al publicador. Una generación se define como un grupo lógico de cambios por artículo.

UseInteractiveResolver

Obtiene o establece un valor que indica si se usa el solucionador interactivo durante la reconciliación.

UseWebSynchronization

Obtiene o establece si se utiliza la sincronización web.

Validate

Obtiene o establece si se realiza la validación de los datos del suscriptor al final de la sincronización.

WorkingDirectory

Obtiene o establece el directorio de trabajo desde el cual se obtiene acceso a los archivos de instantánea cuando se utiliza el protocolo FTP.

Métodos

Abort()

Anula la sincronización.

ClearAllTraceFlags()

Borra todas las marcas de seguimiento usadas por el agente de sincronización.

ClearTraceFlag(Int32)

Borra una marca de seguimiento.

Dispose()

Libera los recursos no administrados usados por MergeSynchronizationAgent.

Dispose(Boolean)

Libera los recursos no administrados usados por MergeSynchronizationAgent la clase y, opcionalmente, libera los recursos administrados.

EnableTraceFlag(Int32)

Habilita las marcas de seguimiento.

Finalize()

Finaliza el agente.

IsSnapshotRequired()

Conecta al publicador o el distribuidor y el suscriptor para determinar si se aplicará una instantánea nueva durante la próxima sincronización del agente.

ProcessMessagesAtPublisher()

Procesa los mensajes en el publicador.

ProcessMessagesAtSubscriber()

Procesa los mensajes en el suscriptor.

Synchronize()

Inicia el Agente de mezcla para sincronizar la suscripción.

Eventos

ComStatus

Ocurre cuando el Agente de mezcla devuelve la información de estado Com de la sincronización.

Status

Ocurre cuando el Agente de mezcla devuelve la información de estado de la sincronización.

Se aplica a

Seguridad para subprocesos

Todos los miembros estáticos públicos (Shared de Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.