MergeSynchronizationAgent Klasse

Definition

Bietet die Funktionalität des 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
Vererbung
MergeSynchronizationAgent
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird die Methode Synchronize auf die Instanz der Klasse MergeSynchronizationAgent aufgerufen, die von der SynchronizationAgent Eigenschaft zur Synchronisation des Push-Subscriptions abgerufen wird.

// 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 Merge-Abonnement zu synchronisieren. Da das Pull-Abonnement mit einem Wert von false für CreateSyncAgentByDefaulterstellt wurde, müssen zusätzliche Eigenschaften bereitgestellt werden.

// 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 Klasse MergeSynchronizationAgent unterstützt die Fähigkeit, folgende Replikationsaufgaben auszuführen:

  • Synchronisieren Sie Abonnements.

  • Gib an, ob während der Synchronisation nur die Upload-Phase, nur die Download-Phase oder beide Phasen ausgeführt werden.

  • Überprüfen Sie, dass ein Abonnement die erwarteten Daten enthält.

  • Geben Sie einen anderen Snapshot-Ordner an, aus dem der erste Snapshot für ein Abonnement angewendet werden kann.

Konstruktoren

Name Beschreibung
MergeSynchronizationAgent()

Erstellt eine Instanz der MergeSynchronizationAgent-Klasse.

Eigenschaften

Name Beschreibung
AlternateSynchronizationPartnerCollection

Bekommt die alternativen Synchronisationspartner für ein Abonnement.

AltSnapshotFolder

Erhält oder setzt den alternativen Snapshot-Ordner für das Abonnement.

ComErrorCollection

Erhält eine Sammlung von Fehlern, die vom Replikationsagenten generiert werden.

Distributor

Erhält oder setzt den Namen der Instanz von Microsoft SQL Server, die als Distributor für das Abonnement fungiert.

DistributorAddress

Erhält oder setzt die Netzwerkadresse, die zur Verbindung zum Distributor verwendet wird, wenn die DistributorNetwork Eigenschaft angegeben wird.

DistributorEncryptedPassword

Erhält oder setzt das verschlüsselte Passwort des Distributors.

DistributorLogin

Erhält oder setzt den Login-Namen, der beim Verbinden mit dem Distributor über SQL Server Authentication verwendet wird.

DistributorNetwork

Erhält oder setzt das Client-Net-Library, das beim Verbinden mit dem Distributor verwendet wird.

DistributorPassword

Legt das Passwort fest, das bei der Verbindung mit dem Distributor mittels SQL Server-Authentifizierung verwendet wird.

DistributorSecurityMode

Erhält oder setzt den Sicherheitsmodus, der beim Verbinden mit dem Verteiler verwendet wird.

DownloadGenerationsPerBatch

Erhält oder setzt die Anzahl der Generationen, die in einer einzigen Charge verarbeitet werden sollen, während Änderungen vom Publisher auf den Abonnenten heruntergeladen werden. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert.

DynamicSnapshotLocation

Erhält oder legt den Standort des partitionierten Snapshots für diesen Abonnenten fest.

ExchangeType

Erhält oder legt fest, wie Daten während der Synchronisation ausgetauscht werden.

FileTransferType

Erhält oder bestimmt, wie die ursprünglichen Snapshot-Dateien an den Abonnenten übertragen werden.

HostName

Erhält oder setzt den vom Merge-Agent verwendeten Wert, wenn er einen parametrisierten Filter auswertet, der die Funktion HOST_NAME verwendet.

InputMessageFile

Erhält oder setzt die Eingabe-Nachrichtendatei.

InternetLogin

Erhält oder setzt den Login-Namen, der bei der Websynchronisation verwendet wird, wenn man sich mit dem Publisher verbindet, mittels Internet-Authentifizierung.

InternetPassword

Legt das Passwort für die InternetLogin Eigenschaft fest, die bei der Websynchronisierung verwendet wird, wenn man sich mit dem Publisher verbindet, indem Internet-Authentifizierung verwendet wird.

InternetProxyLogin

Erhält oder setzt den Login-Namen, der bei der Websynchronisation verwendet wird, wenn man sich mit dem Webserver verbindet, über einen Internet-Proxy-Server.

InternetProxyPassword

Legt das Passwort für den Login fest, das bei der Websynchronisation verwendet wird, wenn man sich mit dem Webserver über einen Internet-Proxy-Server verbindet.

InternetProxyServer

Erhält oder setzt den Namen des Internet-Proxy-Servers, der bei der Verbindung mit dem Webserver verwendet wird.

InternetSecurityMode

Erhält oder setzt die HTTP-Authentifizierungsmethode, die beim Verbinden mit dem Webserver während der Websynchronisation verwendet wird.

InternetTimeout

Erhält oder setzt das HTTP-Timeout beim Verbinden mit dem Webserver.

InternetUrl

Erhält oder setzt die URL des Webdienstes, der für die Websynchronisation konfiguriert ist.

LastUpdatedTime

Erhält den Zeitstempel des letzten Mals, als der Replikationsagent das Abonnement synchronisiert hat.

LoginTimeout

Erhält oder setzt die maximale Sekundenanzahl für die Wartezeit, bis Verbindungen hergestellt werden.

MetadataRetentionCleanup

Hole oder set, ob Metadaten bereinigt werden sollen.

Output

Erhält oder setzt die Ausgabedatei des Agenten.

OutputMessageFile

Erhält oder setzt die Eingabe-Nachrichtendatei.

OutputVerboseLevel

Erhält oder setzt das Detailniveau der Informationen, die in die Agentenausgabedatei geschrieben werden.

ProfileName

Erhält oder setzt den Namen des Profils, das vom Agenten verwendet wird.

Publication

Bekommt oder setzt den Namen der Publikation.

Publisher

Erhält oder setzt den Namen der Microsoft SQL Server-Instanz, die der Publisher für das Abonnement ist.

PublisherAddress

Erhält oder setzt die Netzwerkadresse, die zur Verbindung zum Publisher verwendet wird, wenn die PublisherNetwork Eigenschaft angegeben wird.

PublisherChanges

Erhält die Gesamtzahl der Publisher-Änderungen, die beim Abonnenten während der letzten Synchronisation angewendet wurden.

PublisherConflicts

Erhält die Gesamtzahl der Konflikte, die beim Publisher während der letzten Synchronisation aufgetreten sind.

PublisherDatabase

Erhält oder setzt den Namen der Publikationsdatenbank.

PublisherEncryptedPassword

Bekommt oder setzt das verschlüsselte Passwort des Verlags.

PublisherFailoverPartner

Erhält oder setzt die Failover-Partnerinstanz von SQL Server, die an einer Datenbankspiegelungssitzung mit der Publikationsdatenbank teilnimmt.

PublisherLogin

Erhält oder setzt den Login-Namen, der beim Verbinden mit dem Publisher verwendet wird, mithilfe der SQL Server-Authentifizierung.

PublisherNetwork

Erhält oder setzt den Client Net-Library, der beim Verbinden mit dem Publisher verwendet wird.

PublisherPassword

Legt das Passwort fest, das beim Verbinden mit dem Publisher verwendet wird, mittels SQL Server Authentication.

PublisherSecurityMode

Erhält oder setzt den Sicherheitsmodus, der beim Verbinden mit dem Publisher verwendet wird.

QueryTimeout

Erhält oder legt die Anzahl der Sekunden fest, die für interne Abfragen erlaubt sind.

SecureDistributorEncryptedPassword

Erhält oder setzt das sichere Verteiler-verschlüsselte Passwort.

SecurePublisherEncryptedPassword

Erhält oder setzt das sichere, verschlüsselte Verlagspasswort.

SecureSubscriberEncryptedPassword

Erhält oder setzt das sichere, verschlüsselte Passwort für den Abonnenten.

Subscriber

Erhält oder setzt den Namen der Instanz des Microsoft SQL Server, die der Abonnent ist.

SubscriberChanges

Erhält die Gesamtzahl der Abonnentenänderungen, die beim Publisher während der letzten Synchronisation angewendet wurden.

SubscriberConflicts

Erhält die Gesamtzahl der Konflikte, die beim Publisher während der letzten Synchronisation aufgetreten sind.

SubscriberDatabase

Erhält oder setzt den Namen der Abonnementdatenbank.

SubscriberDatabasePath

Erhält oder setzt den Pfad der Abonnentendatenbank.

SubscriberDataSourceType

Erhält oder legt die Art der Datenquelle fest, die als Abonnent verwendet wird.

SubscriberEncryptedPassword

Erhält oder setzt das verschlüsselte Passwort des Abonnenten.

SubscriberLogin

Erhält oder setzt den Login-Namen, der bei der Verbindung zum Abonnenten durch SQL Server-Authentifizierung verwendet wird.

SubscriberPassword

Legt das Passwort fest, das bei der Verbindung mit dem Abonnenten durch SQL Server-Authentifizierung verwendet wird.

SubscriberSecurityMode

Erhält oder stellt den Sicherheitsmodus ein, der beim Verbinden mit dem Abonnenten verwendet wird.

SubscriptionType

Es gibt oder bestimmt, ob das Abonnement ein Push- oder Pull-Abonnement ist.

SyncToAlternate

Erhält oder setzt fest, ob die Synchronisation an einen alternativen Synchronisationspartner erfolgt.

UploadGenerationsPerBatch

Erhält oder setzt die Anzahl der Generationen, die in einer einzigen Charge verarbeitet werden sollen, während Änderungen vom Abonnenten auf den Publisher hochgeladen werden. Eine Generierung ist als logische Gruppe von Änderungen pro Artikel definiert.

UseInteractiveResolver

Erhält oder setzt, ob der interaktive Resolver während der Abstimmung verwendet wird.

UseWebSynchronization

Erhält oder setzt, ob Web-Synchronisation verwendet wird.

Validate

Erhält oder legt fest, ob am Ende der Synchronisation die Datenvalidierung an den Abonnentendaten durchgeführt wird.

WorkingDirectory

Erhält oder setzt das Arbeitsverzeichnis, aus dem Snapshot-Dateien beim FTP-Einsatz abgerufen werden.

Methoden

Name Beschreibung
Abort()

Es bricht die Synchronisation ab.

ClearAllTraceFlags()

Löscht alle vom Synchronisationsagenten verwendeten Trace-Flags.

ClearTraceFlag(Int32)

Entfernt eine Spurflagge.

Dispose()

Freisetzt die unverwalteten Ressourcen, die von MergeSynchronizationAgentverwendet werden.

Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von MergeSynchronizationAgent der Klasse verwendet werden, und gibt optional die verwalteten Ressourcen frei.

EnableTraceFlag(Int32)

Ermöglicht das Flaggenverfolgung.

Finalize()

Finalisiert den Agenten.

IsSnapshotRequired()

Verbindet sich mit dem Publisher oder Distributor und dem Abonnenten, um zu bestimmen, ob bei der nächsten Agentensynchronisation ein neuer Snapshot angewendet wird.

ProcessMessagesAtPublisher()

Verarbeitet die Nachrichten beim Verlag.

ProcessMessagesAtSubscriber()

Verarbeitet die Nachrichten beim Abonnenten.

Synchronize()

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

Ereignisse

Name Beschreibung
ComStatus

Tritt auf, wenn der Merge-Agent Synchronization Com-Statusinformationen zurückgibt.

Status

Tritt auf, wenn der Merge-Agent Synchronisationsstatusinformationen zurückgibt.

Gilt für:

Threadsicherheit

Alle öffentlichen statischen (in Visual Basic geteilten) Mitglieder dieses Typs sind threadsicher. Instanzenmitglieder sind nicht garantiert threadsicher.