Synchronisieren eines PushabonnementsSynchronize a Push Subscription

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie ein Pushabonnement in SQL ServerSQL Server mit SQL Server Management StudioSQL Server Management Studio, Replikations-Agentsoder Replikationsverwaltungsobjekten (RMO) synchronisiert wird.This topic describes how to synchronize a push subscription in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio, replication agents, or Replication Management Objects (RMO).

Hinweis

Eine verwaltete Azure SQL-Datenbank-Instanz kann als Verleger, Verteiler und Abonnent für die Momentaufnahme- und Transaktionsreplikation fungieren.Azure SQL Database managed instance can be a publisher, distributor, and subscriber for snapshot and transactional replication. Einzelne und in einem Pool zusammengefasste Azure SQL-Datenbanken können nur Pushabonnenten für Momentaufnahme- und Transaktionsreplikation sein.Azure SQL database single and pooled databases can only be push subscribers for snapshot and transactional replication. Weitere Informationen finden Sie unter Transaktionsreplikation mit Azure SQL-Datenbank.For more information, see Transactional replication with Azure SQL Database.

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

Abonnements werden durch den Verteilungs-Agent (für Momentaufnahme- und Transaktionsveröffentlichungen) oder durch den Merge-Agent (für Mergeveröffentlichungen) synchronisiert.Subscriptions are synchronized by the Distribution Agent (for snapshot and transactional replication) or the Merge Agent (for merge replication). Agents können kontinuierlich, bei Bedarf oder nach einem Zeitplan ausgeführt werden.Agents can run continuously, run on demand, or run on a schedule. Weitere Informationen zum Angeben von Synchronisierungszeitplänen finden Sie unter Angeben von Synchronisierungszeitplänen.For more information about specifying synchronization schedules, see Specify Synchronization Schedules.

Die bedarfsgesteuerte Synchronisierung eines Abonnements kann über die Ordner Lokale Veröffentlichungen und Lokale Abonnements in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio und the Alle Abonnements im Replikationsmonitor erfolgen.Synchronize a subscription on demand from the Local Publications and Local Subscriptions folders in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio and the All Subscriptions tab in Replication Monitor. Abonnements von Oracle-Veröffentlichungen können vom Abonnenten nicht bedarfsgesteuert synchronisiert werden.Subscriptions to Oracle publications cannot be synchronized on demand from the Subscriber. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.For information about starting Replication Monitor, see Start the Replication Monitor.

So führen Sie die bedarfsgesteuerte Synchronisierung eines Pushabonnements in Management Studio durch (auf dem Verleger)To synchronize a push subscription on demand in Management Studio (at the Publisher)

  1. Stellen Sie in Management StudioManagement Studioeine Verbindung mit dem Verleger her, und erweitern Sie dann den Serverknoten.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .Expand the Replication folder, and then expand the Local Publications folder.

  3. Erweitern Sie die Veröffentlichung, für die Abonnements synchronisiert werden sollen.Expand the publication for which you want to synchronize subscriptions.

  4. Klicken Sie mit der rechten Maustaste auf das zu synchronisierende Abonnement, und klicken Sie dann auf Synchronisierungsstatus anzeigen.Right-click the subscription you want to synchronize, and then click View Synchronization Status.

  5. Klicken Sie im Dialogfeld Synchronisierungsstatus anzeigen - <Abonnent>:<SubscriptionDatabase> auf Start.In the View Synchronization Status - <Subscriber>:<SubscriptionDatabase> dialog box, click Start. Nach Abschluss der Synchronisierung wird die Meldung Synchronisierung abgeschlossen eingeblendet.When synchronization is complete, the message Synchronization completed is displayed.

  6. Klicken Sie auf Schließen.Click Close.

So führen Sie die bedarfsgesteuerte Synchronisierung eines Pushabonnements in Management Studio durch (auf dem Abonnenten)To synchronize a push subscription on demand in Management Studio (at the Subscriber)

  1. Stellen Sie in Management StudioManagement Studioeine Verbindung mit dem Abonnenten her, und erweitern Sie dann den Serverknoten.Connect to the Subscriber in Management StudioManagement Studio, and then expand the server node.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Abonnements .Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. Klicken Sie mit der rechten Maustaste auf das zu synchronisierende Abonnement, und klicken Sie dann auf Synchronisierungsstatus anzeigen.Right-click the subscription you want to synchronize, and then click View Synchronization Status.

  4. Es wird gemeldet, dass eine Verbindung mit dem Verteiler hergestellt wird.A message is displayed about establishing a connection to the Distributor. Klicken Sie auf OK.Click OK.

  5. Klicken Sie im Dialogfeld Synchronisierungsstatus anzeigen – <Subscriber>:<SubscriptionDatabase> auf Start.In the View Synchronization Status - <Subscriber>:<SubscriptionDatabase> dialog box, click Start. Nach Abschluss der Synchronisierung wird die Meldung Synchronisierung abgeschlossen eingeblendet.When synchronization is complete, the message Synchronization completed is displayed.

  6. Klicken Sie auf Schließen.Click Close.

So führen Sie die bedarfsgesteuerte Synchronisierung eines Pushabonnements im Replikationsmonitor durchTo synchronize a push subscription on demand in Replication Monitor

  1. Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.In Replication Monitor, expand a Publisher group in the left pane, expand a Publisher, and then click a publication.

  2. Klicken Sie auf die Registerkarte Alle Abonnements .Click the All Subscriptions tab.

  3. Klicken Sie mit der rechten Maustaste auf das Abonnement, das Sie synchronisieren möchten, und klicken Sie dann auf Synchronisierung starten.Right-click the subscription you want to synchronize, and then click Start Synchronizing.

  4. Wenn Sie den Status der Synchronisierung anzeigen möchten, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Details anzeigen.To view synchronization progress, right-click the subscription, and then click View Details.

Verwenden von Replikations-AgentsUsing Replication Agents

Pushabonnements können programmgesteuert oder bei Bedarf synchronisiert werden, indem die entsprechende ausführbare Datei für den Replikations-Agent an der Eingabeaufforderung ausgeführt wird.Push subscriptions can be synchronized programmatically and on-demand by invoking the appropriate replication agent executable file from the command prompt. Welche ausführbare Datei für den Replikations-Agent ausgeführt wird, hängt vom Typ der Veröffentlichung ab, zu der die Pushveröffentlichung gehört.The replication agent executable file that is invoked will depend on the type of publication to which the push subscription belongs.

So starten Sie den Verteilungs-Agent, um ein Pushabonnement für eine Transaktionsveröffentlichung zu synchronisierenTo start the Distribution Agent to synchronize a push subscription to a transactional publication

  1. Führen Sie auf dem Verteiler an der Eingabeaufforderung oder in einer Batchdatei distrib.exeaus.From the command prompt or in a batch file at the Distributor, execute distrib.exe. Geben Sie die folgenden Befehlszeilenargumente an:Specify the following command-line arguments:

    • -Publisher-Publisher

    • -PublisherDB-PublisherDB

    • -Distributor-Distributor

    • -Subscriber-Subscriber

    • -SubscriberDB-SubscriberDB

    • -SubscriptionType = 0-SubscriptionType = 0

    Wenn Sie die SQL Server-Authentifizierung verwenden, müssen Sie auch die folgenden Argumente angeben:If you are using SQL Server Authentication, you must also specify the following arguments:

    • -DistributorLogin-DistributorLogin

    • -DistributorPassword-DistributorPassword

    • -DistributorSecurityMode = 0-DistributorSecurityMode = 0

    • -PublisherLogin-PublisherLogin

    • -PublisherPassword-PublisherPassword

    • -PublisherSecurityMode = 0-PublisherSecurityMode = 0

    • -SubscriberLogin-SubscriberLogin

    • -SubscriberPassword-SubscriberPassword

    • -SubscriberSecurityMode = 0-SubscriberSecurityMode = 0

      Wichtig

      Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.When possible, use Windows authentication.

So starten Sie den Merge-Agent, um ein Pushabonnement für eine Mergeveröffentlichung zu synchronisierenTo start the Merge Agent to synchronize a push subscription to a merge publication

  1. Führen Sie auf dem Verteiler an der Eingabeaufforderung oder in einer Batchdatei replmerg.exeaus.From the command prompt or in a batch file at the Distributor, execute replmerg.exe. Geben Sie die folgenden Befehlszeilenargumente an:Specify the following command-line arguments:

    • -Publisher-Publisher

    • -PublisherDB-PublisherDB

    • -Publication-Publication

    • -Distributor-Distributor

    • -Subscriber-Subscriber

    • -SubscriberDB-SubscriberDB

    • -SubscriptionType = 0-SubscriptionType = 0

    Wenn Sie die SQL Server-Authentifizierung verwenden, müssen Sie auch die folgenden Argumente angeben:If you are using SQL Server Authentication, you must also specify the following arguments:

    • -DistributorLogin-DistributorLogin

    • -DistributorPassword-DistributorPassword

    • -DistributorSecurityMode = 0-DistributorSecurityMode = 0

    • -PublisherLogin-PublisherLogin

    • -PublisherPassword-PublisherPassword

    • -PublisherSecurityMode = 0-PublisherSecurityMode = 0

    • -SubscriberLogin-SubscriberLogin

    • -SubscriberPassword-SubscriberPassword

    • -SubscriberSecurityMode = 0-SubscriberSecurityMode = 0

      Wichtig

      Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.When possible, use Windows authentication.

Beispiele (Replikations-Agents)Examples (Replication Agents)

Im folgenden Beispiel wird der Verteilungs-Agent gestartet, um ein Pushabonnement zu synchronisieren.The following example starts the Distribution Agent to synchronize a push subscription.

  
REM -- Declare the variables.  
SET Publisher=%instancename%  
SET Subscriber=%instancename%  
SET PublicationDB=AdventureWorks2012  
SET SubscriptionDB=AdventureWorks2012Replica   
SET Publication=AdvWorksProductsTran  
  
REM -- Start the Distribution Agent with four subscription streams.  
REM -- The following command must be supplied without line breaks.  
"C:\Program Files\Microsoft SQL Server\120\COM\DISTRIB.EXE" -Subscriber %Subscriber%   
-SubscriberDB %SubscriptionDB% -SubscriberSecurityMode 1 -Publication %Publication%   
-Publisher %Publisher% -PublisherDB %PublicationDB% -Distributor %Publisher%   
-DistributorSecurityMode 1 -Continuous -SubscriptionType 0 -SubscriptionStreams 4  
  

Im folgenden Beispiel wird der Merge-Agent gestartet, um ein Pushabonnement zu synchronisieren.The following example starts the Merge Agent to synchronize a push subscription.

  
REM -- Declare the variables.  
SET Publisher=%instancename%  
SET Subscriber=%instancename%  
SET PublicationDB=AdventureWorks2012  
SET SubscriptionDB=AdventureWorks2012Replica   
SET Publication=AdvWorksSalesOrdersMerge  
  
REM -- Start the Merge Agent.  
REM -- The following command must be supplied without line breaks.  
"C:\Program Files\Microsoft SQL Server\120\COM\REPLMERG.EXE"  -Publisher %Publisher%   
-Subscriber  %Subscriber%  -Distributor %Publisher% -PublisherDB  %PublicationDB%   
-SubscriberDB %SubscriptionDB% -Publication %Publication% -PublisherSecurityMode 1   
-OutputVerboseLevel 3  -Output -SubscriberSecurityMode 1  -SubscriptionType 0   
-DistributorSecurityMode 1  
  

Verwenden von Replikationsverwaltungsobjekten (RMO)Using Replication Management Objects (RMO)

Sie können Pushabonnements mit Replikationsverwaltungsobjekten (RMO) und dem Zugriff von verwaltetem Code auf Funktionen des Replikations-Agents programmgesteuert synchronisieren.You can synchronize push subscriptions programmatically by using Replication Management Objects (RMO) and managed code access to replication agent functionalities. Welche Klassen für die Synchronisierung eines Pushabonnements verwendet werden, hängt vom Typ der Veröffentlichung ab, zu der das Abonnement gehört.The classes that you use to synchronize a push subscription depend on the type of publication to which the subscription belongs.

Hinweis

Starten Sie den Agent asynchron, wenn Sie eine Synchronisierung starten möchten, die autonom ausgeführt wird, ohne sich auf die Anwendung auszuwirken.If you want to start a synchronization that runs autonomously without affecting your application, start the agent asynchronously. Wenn Sie während der Synchronisierung das Ergebnis der Synchronisierung überwachen und Rückrufe vom Agent empfangen möchten (z. B. über eine Statusanzeige), müssen Sie den Agent synchron starten.However, if you want to monitor the outcome of the synchronization and receive callbacks from the agent during the synchronization process (for example, if you want to display a progress bar), you should start the agent synchronously. Für MicrosoftMicrosoftSQL Server 2005 Express EditionSQL Server 2005 Express Edition -Abonnenten müssen Sie den Agent synchron starten.For MicrosoftMicrosoftSQL Server 2005 Express EditionSQL Server 2005 Express Edition Subscribers, you must start the agent synchronously.

So synchronisieren Sie ein Pushabonnement für eine Momentaufnahme- oder TransaktionsveröffentlichungTo synchronize a push subscription to a snapshot or transactional publication

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Erstellen Sie eine Instanz der TransSubscription -Klasse, und legen Sie die folgenden Eigenschaften fest:Create an instance of the TransSubscription class and set the following properties:

  3. Rufen Sie die LoadProperties -Methode auf, um die restlichen Abonnementeigenschaften abzurufen.Call the LoadProperties method to get the remaining subscription properties. Überprüfen Sie, ob das Abonnement vorhanden ist, wenn diese Methode falsezurückgibt.If this method returns false, verify that the subscription exists.

  4. Starten Sie den Verteilungs-Agent auf eine der folgenden Arten auf dem Verteiler:Start the Distribution Agent at the Distributor in one of the following ways:

    • Rufen Sie die SynchronizeWithJob -Methode für die TransSubscription -Instanz aus Schritt 2 auf.Call the SynchronizeWithJob method on the instance of TransSubscription from step 2. Diese Methode startet den Verteilungs-Agent asynchron, und die Steuerung wird sofort an die Anwendung zurückgegeben, während der Agentauftrag ausgeführt wird.This method starts the Distribution Agent asynchronously, and control immediately returns to your application while the agent job is running. Sie können diese Methode nicht aufrufen, wenn das Abonnement mit dem Wert false for CreateSyncAgentByDefault.You cannot call this method if the subscription was created with a value of false for CreateSyncAgentByDefault.

    • Rufen Sie eine Instanz der TransSynchronizationAgent -Klasse von der SynchronizationAgent -Eigenschaft ab, und rufen Sie die Synchronize -Methode auf.Obtain an instance of the TransSynchronizationAgent class from the SynchronizationAgent property, and call the Synchronize method. Diese Methode startet den Agent synchron, und die Steuerung bleibt beim ausgeführten Agentauftrag.This method starts the agent synchronously, and control remains with the running agent job. Während der synchronen Ausführung können Sie das Status -Ereignis verarbeiten, während der Agent ausgeführt wird.During synchronous execution you can handle the Status event while the agent is running.

So synchronisieren Sie ein Pushabonnement mit einer MergeveröffentlichungTo synchronize a push subscription to a merge publication

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Erstellen Sie eine Instanz der MergeSubscription -Klasse, und legen Sie die folgenden Eigenschaften fest:Create an instance of the MergeSubscription class, and set the following properties:

  3. Rufen Sie die LoadProperties -Methode auf, um die restlichen Abonnementeigenschaften abzurufen.Call the LoadProperties method to get the remaining subscription properties. Überprüfen Sie, ob das Abonnement vorhanden ist, wenn diese Methode falsezurückgibt.If this method returns false, verify that the subscription exists.

  4. Starten Sie den Merge-Agent auf eine der folgenden Arten auf dem Verteiler:Start the Merge Agent at the Distributor in one of the following ways:

    • Rufen Sie die SynchronizeWithJob -Methode für die MergeSubscription -Instanz aus Schritt 2 auf.Call the SynchronizeWithJob method on the instance of MergeSubscription from step 2. Diese Methode startet den Merge-Agent asynchron, und die Steuerung wird sofort an die Anwendung zurückgegeben, während der Agentauftrag ausgeführt wird.This method starts the Merge Agent asynchronously, and control immediately returns to your application while the agent job is running. Sie können diese Methode nicht aufrufen, wenn das Abonnement mit dem Wert false for CreateSyncAgentByDefault.You cannot call this method if the subscription was created with a value of false for CreateSyncAgentByDefault.

    • Rufen Sie eine Instanz der MergeSynchronizationAgent -Klasse von der SynchronizationAgent -Eigenschaft ab, und rufen Sie die Synchronize -Methode auf.Obtain an instance of the MergeSynchronizationAgent class from the SynchronizationAgent property, and call the Synchronize method. Diese Methode startet den Merge-Agent synchron, und die Steuerung bleibt beim ausgeführten Agentauftrag.This method starts the Merge Agent synchronously, and control remains with the running agent job. Während der synchronen Ausführung können Sie das Status -Ereignis verarbeiten, während der Agent ausgeführt wird.During synchronous execution, you can handle the Status event while the agent is running.

Beispiele (RMO)Examples (RMO)

In diesem Beispiel wird ein Pushabonnement mit einer Transaktionsveröffentlichung synchronisiert, wobei der Agent mit dem Agentauftrag asynchron gestartet wird.This example synchronizes a push subscription to a transactional publication, where the agent is started asynchronously using the agent job.

// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";

/// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

TransSubscription subscription;

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Instantiate the push subscription.
    subscription = new TransSubscription();
    subscription.ConnectionContext = conn;
    subscription.DatabaseName = publicationDbName;
    subscription.PublicationName = publicationName;
    subscription.SubscriptionDBName = subscriptionDbName;
    subscription.SubscriberName = subscriberName;

    // If the push subscription and the job exists, start the agent job.
    if (subscription.LoadProperties() && subscription.AgentJobId != null)
    {
        // Start the Distribution Agent asynchronously.
        subscription.SynchronizeWithJob();
    }
    else
    {
        // Do something here if the subscription does not exist.
        throw new ApplicationException(String.Format(
            "A subscription to '{0}' does not exists 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 = "AdvWorksProductTran"
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 TransSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Instantiate the push subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription and the job exists, start the agent job.
    If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
        ' Start the Distribution Agent asynchronously.
        subscription.SynchronizeWithJob()
    Else
        ' Do something here if the subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "A subscription to '{0}' does not exists 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

In diesem Beispiel wird ein Pushabonnement mit einer Transaktionsveröffentlichung synchronisiert, wobei der Agent synchron gestartet wird.This example synchronizes a push subscription to a transactional publication, where the agent is started synchronously.

// Define the server, publication, and database names.
string subscriberName = subscriberInstance;
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

TransSubscription subscription;

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Define the push subscription.
    subscription = new TransSubscription();
    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 Distribution 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 = "AdvWorksProductTran"
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 TransSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Define the push subscription.
    subscription = New TransSubscription()
    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 Distribution 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.")
        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

In diesem Beispiel wird ein Pushabonnement mit einer Mergeveröffentlichung synchronisiert, wobei der Agent asynchron mit dem Agentauftrag gestartet wird.This example synchronizes a push subscription to a merge publication, where the agent is started asynchronously using the agent job.

// 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 push subscription.
    subscription = new MergeSubscription();
    subscription.ConnectionContext = conn;
    subscription.DatabaseName = publicationDbName;
    subscription.PublicationName = publicationName;
    subscription.SubscriptionDBName = subscriptionDbName;
    subscription.SubscriberName = subscriberName;

    // If the push subscription and the job exists, start the agent job.
    if (subscription.LoadProperties() && subscription.AgentJobId != null)
    {
        // Start the Merge Agent asynchronously.
        subscription.SynchronizeWithJob();
    }
    else
    {
        // Do something here if the subscription does not exist.
        throw new ApplicationException(String.Format(
            "A subscription to '{0}' does not exists 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 push subscription.
    subscription = New MergeSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription and the job exists, start the agent job.
    If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
        ' Start the Merge Agent asynchronously.
        subscription.SynchronizeWithJob()
    Else
        ' Do something here if the subscription does not exist.
        Throw New ApplicationException(String.Format( _
            "A subscription to '{0}' does not exists 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

In diesem Beispiel wird ein Pushabonnement mit einer Mergeveröffentlichung synchronisiert, wobei der Agent synchron gestartet wird.This example synchronizes a push subscription to a merge publication, where the agent is started synchronously.

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

Weitere InformationenSee Also

Konzepte für Replikationsverwaltungsobjekte (RMO) Replication Management Objects Concepts
Synchronisieren von Daten Synchronize Data
Bewährte Methoden für die ReplikationssicherheitReplication Security Best Practices