Freigeben über


MergeSynchronizationAgent Klasse

Definition

Stellt die Funktionalität des Replikationsmerge-Agents bereit.

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
Vererbung
MergeSynchronizationAgent
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird die Synchronize Methode auf die Instanz der MergeSynchronizationAgent Klasse aufgerufen, auf die von der SynchronizationAgent Eigenschaft zugegriffen wird, um das Pushabonnement zu synchronisieren.

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

Im folgenden Beispiel wird eine Instanz der MergeSynchronizationAgent Klasse verwendet, um ein Seriendruckabonnement zu synchronisieren. Da das Pullabonnement mithilfe eines Werts false für CreateSyncAgentByDefault, zusätzliche Eigenschaften angegeben werden müssen.

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

Hinweise

Die MergeSynchronizationAgent Klasse unterstützt die Möglichkeit, die folgenden Replikationsaufgaben auszuführen:

  • Synchronisieren sie Abonnements.

  • Geben Sie an, ob nur die Uploadphase, nur die Downloadphase oder beide Phasen während der Synchronisierung ausgeführt werden.

  • Überprüfen Sie, ob ein Abonnement über die erwarteten Daten verfügt.

  • Geben Sie einen anderen Momentaufnahmeordner an, aus dem die anfängliche Momentaufnahme für ein Abonnement angewendet werden kann.

Konstruktoren

MergeSynchronizationAgent()

Erstellt eine Instanz der MergeSynchronizationAgent-Klasse.

Eigenschaften

AlternateSynchronizationPartnerCollection

Ruft die alternativen Synchronisierungspartner für ein Abonnement ab.

AltSnapshotFolder

Ruft den alternativen Momentaufnahmeordner für das Abonnement ab oder legt diesen fest.

ComErrorCollection

Ruft eine Auflistung von vom Replikations-Agent generierten Fehlern ab.

Distributor

Ruft den Namen der Instanz von Microsoft SQL Server ab, die für das Abonnement als Verteiler fungiert, oder legt diesen fest.

DistributorAddress

Ruft die Netzwerkadresse ab, die verwendet wird, um eine Verbindung mit dem Verteiler herzustellen, wenn die DistributorNetwork-Eigenschaft angegeben ist, oder legt diese fest.

DistributorEncryptedPassword

Ruft das verschlüsselte Kennwort des Verteilers ab oder legt sie fest.

DistributorLogin

Dient zum Abrufen oder Festlegen des Anmeldenamens, der beim Herstellen einer Verbindung mit dem Verteiler mithilfe SQL Server Authentifizierung verwendet wird.

DistributorNetwork

Ruft die Clientnetzwerkbibliothek ab, die beim Herstellen einer Verbindung mit dem Verteiler verwendet wird, oder legt diese fest.

DistributorPassword

Legt das Kennwort fest, das beim Herstellen einer Verbindung mit dem Verteiler mit SQL Server Authentifizierung verwendet wird.

DistributorSecurityMode

Ruft den Sicherheitsmodus ab, der beim Herstellen einer Verbindung mit dem Verteiler verwendet wird, oder legt diesen fest.

DownloadGenerationsPerBatch

Ruft die Anzahl von Generierungen ab, die in einem einzigen Batch verarbeitet werden sollen, während Änderungen vom Verleger auf den Abonnenten heruntergeladen werden, oder legt diese Anzahl fest. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert.

DynamicSnapshotLocation

Ruft den Speicherort der partitionierten Momentaufnahme für diesen Abonnenten ab oder legt diesen fest.

ExchangeType

Ruft ab, wie die Daten während der Synchronisierung ausgetauscht werden, oder legt die Vorgehensweise fest.

FileTransferType

Ruft ab, wie dem Abonnenten die ersten Momentaufnahmedateien übergeben werden, oder legt die Vorgehensweise fest.

HostName

Ruft den vom Merge-Agent verwendeten Wert ab oder legt ihn fest, wenn er einen parameterisierten Filter auswertet, der die HOST_NAME-Funktion verwendet.

InputMessageFile

Ruft die Eingabemeldungsdatei ab oder legt sie fest.

InternetLogin

Ruft den Anmeldenamen ab, der bei der Websynchronisierung verwendet wird, wenn mithilfe der Internetauthentifizierung eine Verbindung mit dem Verleger hergestellt wird, oder legt diesen fest.

InternetPassword

Legt das Kennwort für die InternetLogin-Eigenschaft fest, die bei der Websynchronisierung verwendet wird, wenn mithilfe der Internetauthentifizierung eine Verbindung mit dem Verleger hergestellt wird.

InternetProxyLogin

Ruft den Anmeldenamen ab, der bei der Websynchronisierung verwendet wird, wenn mithilfe eines Internetproxyservers eine Verbindung mit dem Webserver hergestellt wird, oder legt diesen fest.

InternetProxyPassword

Legt das Kennwort für die Anmeldung fest, das bei der Websynchronisierung verwendet wird, wenn mithilfe eines Internetproxyservers eine Verbindung mit dem Webserver hergestellt wird.

InternetProxyServer

Ruft den Namen des Internetproxyservers ab, der bei der Websynchronisierung verwendet wird, wenn eine Verbindung mit dem Webserver hergestellt wird, oder legt diesen fest.

InternetSecurityMode

Ruft die HTTP-Authentifizierungsmethode ab, die beim Herstellen einer Verbindung mit dem Webserver während der Websynchronisierung verwendet wird, oder legt diese fest.

InternetTimeout

Ruft beim Herstellen einer Verbindung mit dem Webserver das HTTP-Timeout ab oder legt dieses fest.

InternetUrl

Ruft die URL des Webdiensts ab, der für die Websynchronisierung konfiguriert ist, oder legt diese fest.

LastUpdatedTime

Ruft den Zeitstempel der letzten Synchronisierung des Abonnements durch diesen Replikations-Agent ab.

LoginTimeout

Ruft die maximale Anzahl von Sekunden ab, die auf das Herstellen von Verbindungen gewartet werden soll, oder legt diese fest.

MetadataRetentionCleanup

Ruft ab oder legt fest, ob Metadaten zu bereinigen sind.

Output

Ruft die Agentausgabedatei ab oder legt diese fest.

OutputMessageFile

Ruft die Eingabemeldungsdatei ab oder legt sie fest.

OutputVerboseLevel

Dient zum Abrufen oder Festlegen der Detailebene von Informationen, die in die Agent-Ausgabedatei geschrieben werden.

ProfileName

Ruft den Namen des Profils ab, das vom Agent verwendet wird, oder legt diesen fest.

Publication

Ruft den Namen der Veröffentlichung ab oder legt diesen fest.

Publisher

Ruft den Namen der Microsoft SQL Server-Instanz ab, die für das Abonnement als Verleger auftritt, oder legt diesen fest.

PublisherAddress

Ruft die Netzwerkadresse ab, die verwendet wird, um eine Verbindung mit dem Verleger herzustellen, wenn die PublisherNetwork-Eigenschaft angegeben wird, oder legt diese fest.

PublisherChanges

Ruft die Gesamtzahl von Verlegeränderungen ab, die während der letzten Synchronisierung beim Abonnenten angewendet wurden.

PublisherConflicts

Ruft die Gesamtzahl von Konflikten ab, die während der letzten Synchronisierung beim Verleger aufgetreten sind.

PublisherDatabase

Ruft den Namen der Veröffentlichungsdatenbank ab oder legt ihn fest.

PublisherEncryptedPassword

Ruft das verschlüsselte Kennwort für den Verleger ab oder legt es fest.

PublisherFailoverPartner

Ruft die Failoverpartnerinstanz von SQL Server ab, die an einer Datenbankspiegelsitzung mit der Publikationsdatenbank teilnimmt, oder legt diese fest.

PublisherLogin

Dient zum Abrufen oder Festlegen des Anmeldenamens, der beim Herstellen einer Verbindung mit dem Publisher mithilfe der SQL Server Authentifizierung verwendet wird.

PublisherNetwork

Ruft die Clientnetzwerkbibliothek ab, die beim Herstellen einer Verbindung mit dem Verleger verwendet wird, oder legt diese fest.

PublisherPassword

Legt das Kennwort fest, das beim Herstellen einer Verbindung mit dem Publisher mithilfe SQL Server Authentifizierung verwendet wird.

PublisherSecurityMode

Ruft den Sicherheitsmodus ab, der beim Herstellen einer Verbindung mit dem Verleger verwendet wird, oder legt diesen fest.

QueryTimeout

Ruft die Anzahl von Sekunden ab, innerhalb derer interne Abfragen abgeschlossen sein müssen, oder legt diese fest.

SecureDistributorEncryptedPassword

Ruft das verschlüsselte Kennwort für den sicheren Verteiler ab oder legt sie fest.

SecurePublisherEncryptedPassword

Ruft das sichere verschlüsselte Kennwort für den Verleger ab oder legt es fest.

SecureSubscriberEncryptedPassword

Ruft das sichere verschlüsselte Kennwort für den Abonnenten ab oder legt es fest.

Subscriber

Ruft den Namen der Microsoft SQL Server-Instanz ab, die der Abonnent ist, oder legt diesen fest.

SubscriberChanges

Ruft die Gesamtzahl von Abonnentenänderungen ab, die während der letzten Synchronisierung beim Verleger angewendet wurden.

SubscriberConflicts

Ruft die Gesamtzahl von Konflikten ab, die während der letzten Synchronisierung beim Verleger aufgetreten sind.

SubscriberDatabase

Ruft den Namen der Abonnementdatenbank ab oder legt diesen fest.

SubscriberDatabasePath

Ruft den Pfad zur Abonnentendatenbank ab oder legt ihn fest.

SubscriberDataSourceType

Ruft den Typ der Datenquelle ab, die als Abonnent verwendet wird, oder legt diesen fest.

SubscriberEncryptedPassword

Ruft das verschlüsselte Kennwort für den Abonnenten ab oder legt es fest.

SubscriberLogin

Ruft den Anmeldenamen ab, der beim Herstellen einer Verbindung mit dem Abonnenten mithilfe SQL Server Authentifizierung verwendet wird, oder legt diesen fest.

SubscriberPassword

Legt das Kennwort fest, das beim Herstellen einer Verbindung mit dem Abonnenten mithilfe SQL Server Authentifizierung verwendet wird.

SubscriberSecurityMode

Ruft den Sicherheitsmodus ab, der beim Herstellen einer Verbindung mit dem Abonnenten verwendet wird, oder legt diesen fest.

SubscriptionType

Ruft ab oder legt fest, ob das Abonnement ein Push- oder Pullabonnement ist.

SyncToAlternate

Ruft ab oder legt fest, ob es sich bei der Synchronisierung um eine Synchronisierung mit einem alternativen Synchronisierungspartner handelt.

UploadGenerationsPerBatch

Ruft die Anzahl von Generierungen ab, die in einem einzigen Batch verarbeitet werden sollen, während Änderungen vom Abonnenten auf den Verleger hochgeladen werden, oder legt diese Anzahl fest. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert.

UseInteractiveResolver

Ruft ab oder legt fest, ob für die Abstimmung der interaktive Konfliktlöser verwendet wird.

UseWebSynchronization

Ruft ab oder legt fest, ob die Websynchronisierung verwendet wird.

Validate

Ruft ab oder legt fest, ob die Abonnentendaten am Ende der Synchronisierung einer Datenüberprüfung unterzogen werden.

WorkingDirectory

Ruft das Arbeitsverzeichnis ab, von dem aus bei Verwendung von FTP auf Momentaufnahmedateien zugegriffen wird, oder legt dieses fest.

Methoden

Abort()

Bricht die Synchronisierung ab.

ClearAllTraceFlags()

Löscht alle vom Synchronisierungs-Agent verwendeten Ablaufverfolgungsflags.

ClearTraceFlag(Int32)

Löscht ein Ablaufverfolgungsflag.

Dispose()

Veröffentlicht die nicht verwalteten Ressourcen, die von MergeSynchronizationAgent.

Dispose(Boolean)

Veröffentlicht die nicht verwalteten Ressourcen, die von MergeSynchronizationAgent der Klasse verwendet werden, und gibt optional die verwalteten Ressourcen ab.

EnableTraceFlag(Int32)

Aktiviert die Verwendung von Ablaufverfolgungsflags.

Finalize()

Schließt den Agent ab.

IsSnapshotRequired()

Stellt eine Verbindung mit dem Verleger oder Verteiler und dem Abonnenten her, um zu bestimmen, ob während der nächsten Agentsynchronisierung eine neue Momentaufnahme angewendet wird.

ProcessMessagesAtPublisher()

Verarbeitet die Nachrichten bei Publisher.

ProcessMessagesAtSubscriber()

Verarbeitet die Nachrichten beim Abonnenten.

Synchronize()

Startet den Merge-Agent, um das Abonnement zu synchronisieren.

Ereignisse

ComStatus

Tritt auf, wenn der Merge-Agent Informationen zum Kommunikationsstatus der Synchronisierung zurückgibt.

Status

Tritt auf, wenn der Merge-Agent Informationen zum Synchronisierungsstatus zurückgibt.

Gilt für:

Threadsicherheit

Alle öffentlichen statischen Elemente dieses Typs (Shared in Microsoft Visual Basic) sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.