MergeSynchronizationAgent Classe

Definizione

Fornisce la funzionalità di Agente merge repliche.

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
Ereditarietà
MergeSynchronizationAgent
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene chiamato il Synchronize metodo nell'istanza della MergeSynchronizationAgent classe a cui viene eseguito l'accesso dalla SynchronizationAgent proprietà per sincronizzare la sottoscrizione 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

Nell'esempio MergeSynchronizationAgent seguente viene usata un'istanza della classe per sincronizzare una sottoscrizione di tipo merge. Poiché la sottoscrizione pull è stata creata usando un valore di false per CreateSyncAgentByDefault, è necessario specificare proprietà aggiuntive.

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

Commenti

La MergeSynchronizationAgent classe supporta la possibilità di eseguire le attività di replica seguenti:

  • Sincronizzare le sottoscrizioni.

  • Specificare se solo la fase di caricamento, solo la fase di download o entrambe le fasi vengono eseguite durante la sincronizzazione.

  • Verificare che una sottoscrizione disponga dei dati previsti.

  • Specificare una cartella snapshot diversa, da cui è possibile applicare lo snapshot iniziale per una sottoscrizione.

Costruttori

MergeSynchronizationAgent()

Crea un'istanza della classe MergeSynchronizationAgent.

Proprietà

AlternateSynchronizationPartnerCollection

Ottiene i partner di sincronizzazione alternativi per una sottoscrizione.

AltSnapshotFolder

Ottiene o imposta la cartella snapshot alternativa per la sottoscrizione.

ComErrorCollection

Ottiene una raccolta di errori generati dall'agente di replica.

Distributor

Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che rappresenta il server di distribuzione per la sottoscrizione.

DistributorAddress

Ottiene o imposta l'indirizzo di rete utilizzato per connettersi al server di distribuzione quando viene specificata la proprietà DistributorNetwork.

DistributorEncryptedPassword

Ottiene o imposta la password crittografata del server di distribuzione.

DistributorLogin

Ottiene o imposta il nome di accesso utilizzato durante la connessione al server di distribuzione usando SQL Server Autenticazione.

DistributorNetwork

Ottiene o imposta la libreria di rete client utilizzata durante la connessione al server di distribuzione.

DistributorPassword

Imposta la password usata durante la connessione al server di distribuzione usando SQL Server Autenticazione.

DistributorSecurityMode

Ottiene o imposta la modalità di sicurezza utilizzata durante la connessione al server di distribuzione.

DownloadGenerationsPerBatch

Ottiene o imposta il numero di generazioni da elaborare in un singolo batch durante il download delle modifiche dal server di pubblicazione al Sottoscrittore. Una generazione è definita come un gruppo logico di modifiche per articolo.

DynamicSnapshotLocation

Ottiene o imposta la posizione dello snapshot partizionato per questo Sottoscrittore.

ExchangeType

Ottiene o imposta il modo in cui viene effettuato lo scambio di dati durante la sincronizzazione.

FileTransferType

Ottiene o imposta il modo in cui i file di snapshot iniziali vengono trasferiti al Sottoscrittore.

HostName

Ottiene o imposta il valore utilizzato dal agente di merge quando valuta un filtro con parametri che usa la funzione HOST_NAME.

InputMessageFile

Ottiene o imposta il file di messaggi di input.

InternetLogin

Ottiene o imposta il nome dell'account di accesso utilizzato con la sincronizzazione Web durante la connessione al server di pubblicazione tramite l'autenticazione Internet.

InternetPassword

Imposta la password per la proprietà InternetLogin utilizzata con la sincronizzazione Web durante la connessione al server di pubblicazione tramite l'autenticazione Internet.

InternetProxyLogin

Ottiene o imposta il nome dell'account di accesso utilizzato con la sincronizzazione Web durante la connessione al server Web tramite un server proxy Internet.

InternetProxyPassword

Imposta la password per l'accesso utilizzata con la sincronizzazione Web durante la connessione al server Web tramite un server proxy Internet.

InternetProxyServer

Ottiene o imposta il nome del server proxy Internet utilizzato con la sincronizzazione Web durante la connessione al server Web.

InternetSecurityMode

Ottiene o imposta il metodo di autenticazione HTTP utilizzato per la connessione al server Web durante la sincronizzazione Web.

InternetTimeout

Ottiene o imposta il timeout HTTP durante la connessione al server Web.

InternetUrl

Ottiene o imposta l'URL del servizio Web configurato per la sincronizzazione Web.

LastUpdatedTime

Ottiene il timestamp dell'ultima volta in cui la sottoscrizione è stata sincronizzata dall'agente di replica.

LoginTimeout

Ottiene o imposta il numero massimo di secondi di attesa per stabilire le connessioni.

MetadataRetentionCleanup

Ottiene o imposta un valore che indica se effettuare la pulizia dei metadati.

Output

Ottiene o imposta il file di output dell'agente.

OutputMessageFile

Ottiene o imposta il file di messaggi di input.

OutputVerboseLevel

Ottiene o imposta il livello di dettaglio delle informazioni scritte nel file di output dell'agente.

ProfileName

Ottiene o imposta il nome del profilo utilizzato dall'agente.

Publication

Ottiene o imposta il nome della pubblicazione.

Publisher

Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che rappresenta il server di pubblicazione per la sottoscrizione.

PublisherAddress

Ottiene o imposta l'indirizzo di rete utilizzato per connettersi al server di pubblicazione quando viene specificata la proprietà PublisherNetwork.

PublisherChanges

Ottiene il numero complessivo di modifiche del server di pubblicazione applicate al Sottoscrittore durante l'ultima sincronizzazione.

PublisherConflicts

Ottiene il numero complessivo di conflitti che si sono verificati in relazione al server di pubblicazione durante l'ultima sincronizzazione.

PublisherDatabase

Ottiene o imposta il nome del database di pubblicazione.

PublisherEncryptedPassword

Ottiene o imposta la password crittografata del server di pubblicazione.

PublisherFailoverPartner

Ottiene o imposta l'istanza del partner di failover di SQL Server che partecipa a una sessione di mirroring del database con il database di pubblicazione.

PublisherLogin

Ottiene o imposta il nome di accesso utilizzato per la connessione al server di pubblicazione usando SQL Server Autenticazione.

PublisherNetwork

Ottiene o imposta la libreria di rete client utilizzata durante la connessione al server di pubblicazione.

PublisherPassword

Imposta la password utilizzata durante la connessione al server di pubblicazione usando SQL Server Autenticazione.

PublisherSecurityMode

Ottiene o imposta la modalità di sicurezza utilizzata durante la connessione al server di pubblicazione.

QueryTimeout

Ottiene o imposta il numero di secondi consentiti per terminare le query interne.

SecureDistributorEncryptedPassword

Ottiene o imposta la password crittografata di protezione del server di distribuzione.

SecurePublisherEncryptedPassword

Ottiene o imposta la password crittografata di protezione del server di pubblicazione.

SecureSubscriberEncryptedPassword

Ottiene o imposta la password crittografata di protezione del Sottoscrittore.

Subscriber

Ottiene o imposta il nome dell'istanza di Microsoft SQL Server che rappresenta il Sottoscrittore.

SubscriberChanges

Ottiene il numero complessivo di modifiche del Sottoscrittore applicate al server di pubblicazione durante l'ultima sincronizzazione.

SubscriberConflicts

Ottiene il numero complessivo di conflitti che si sono verificati in relazione al server di pubblicazione durante l'ultima sincronizzazione.

SubscriberDatabase

Ottiene o imposta il nome del database di sottoscrizione.

SubscriberDatabasePath

Ottiene o imposta il percorso del database Sottoscrittore.

SubscriberDataSourceType

Ottiene o imposta il tipo di origine dati utilizzato come Sottoscrittore.

SubscriberEncryptedPassword

Ottiene o imposta la password crittografata del Sottoscrittore.

SubscriberLogin

Ottiene o imposta il nome di accesso usato durante la connessione al Sottoscrittore usando SQL Server Autenticazione.

SubscriberPassword

Imposta la password usata durante la connessione al Sottoscrittore usando SQL Server Autenticazione.

SubscriberSecurityMode

Ottiene o imposta la modalità di sicurezza utilizzata durante la connessione al Sottoscrittore.

SubscriptionType

Ottiene o imposta un valore che indica se la sottoscrizione è di tipo push o pull.

SyncToAlternate

Ottiene o imposta un valore che indica se la sincronizzazione riguarda un partner di sincronizzazione alternativo.

UploadGenerationsPerBatch

Ottiene o imposta il numero di generazioni da elaborare in un singolo batch durante il caricamento delle modifiche dal Sottoscrittore al server di pubblicazione. Una generazione è definita come un gruppo logico di modifiche per articolo.

UseInteractiveResolver

Ottiene o imposta un valore che indica se il sistema di risoluzione interattivo viene utilizzato durante la riconciliazione.

UseWebSynchronization

Ottiene o imposta un valore che indica se viene utilizzata la sincronizzazione Web.

Validate

Ottiene o imposta un valore che indica se la convalida dei dati viene eseguita sui dati del Sottoscrittore alla fine della sincronizzazione.

WorkingDirectory

Ottiene o imposta la directory di lavoro dalla quale viene eseguito l'accesso ai file di snapshot quando viene utilizzato il protocollo FTP.

Metodi

Abort()

Interrompe la sincronizzazione.

ClearAllTraceFlags()

Cancella tutti i flag di traccia utilizzati dall'agente di sincronizzazione.

ClearTraceFlag(Int32)

Cancella un flag di traccia.

Dispose()

Rilascia le risorse non gestite utilizzate dall'oggetto MergeSynchronizationAgent.

Dispose(Boolean)

Rilascia le risorse non gestite usate dalla MergeSynchronizationAgent classe e facoltativamente rilascia le risorse gestite.

EnableTraceFlag(Int32)

Abilita la traccia del flag.

Finalize()

Completa l'agente.

IsSnapshotRequired()

Si connette al server di pubblicazione o di distribuzione e al Sottoscrittore per determinare se verrà applicato un nuovo snapshot durante la sincronizzazione successiva dell'agente.

ProcessMessagesAtPublisher()

Elabora i messaggi al server di pubblicazione.

ProcessMessagesAtSubscriber()

Elabora i messaggi al Sottoscrittore.

Synchronize()

Avvia l'agente di merge per sincronizzare la sottoscrizione.

Eventi

ComStatus

Si verifica quando l'agente di merge restituisce informazioni sullo stato Com della sincronizzazione.

Status

Si verifica quando l'agente di merge restituisce informazioni sullo stato della sincronizzazione.

Si applica a

Thread safety

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.