Erneutes Initialisieren eines AbonnementsReinitialize a 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 Abonnement in SQL ServerSQL Server mit SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLoder Replikationsverwaltungsobjekten (RMO) neu initialisiert wird.This topic describes how to reinitialize a subscription in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). Einzelne Abonnements können für die erneute Initialisierung markiert werden, sodass während der nächsten Synchronisierung eine neue Momentaufnahme angewendet wird.Individual subscriptions can be marked for reinitialization so that a new snapshot is applied during the next synchronization.

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

Das erneute Initialisieren eines Abonnements ist ein zweistufiger Prozess:Reinitializing a subscription is a two-part process:

  1. Zunächst müssen die Abonnements für eine Veröffentlichung, die erneut initialisiert werden sollen, gekennzeichnet werden.A single subscription or all subscriptions to a publication are marked for reinitialization. Das Kennzeichnen der Abonnements für die erneute Initialisierung erfolgt im Dialogfeld Abonnements erneut initialisieren , das über die Ordner Lokale Veröffentlichungen und Lokale Abonnements in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studioverfügbar ist.Mark subscriptions for reinitialization in the Reinitialize Subscription(s) dialog box, which is available from the Local Publications folder and the Local Subscriptions folder in MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio. Abonnements können darüber hinaus auch auf der Registerkarte Alle Abonnements und über den Veröffentlichungsknoten im Replikationsmonitor als erneut zu initialisieren gekennzeichnet werden.You can also mark subscriptions from the All Subscriptions tab and the publications node in Replication Monitor. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.For information about starting Replication Monitor, see Start the Replication Monitor. Beim Kennzeichnen eines Abonnements für die erneute Initialisierung können Sie zwischen den folgenden Optionen auswählen:When you mark a subscription for reinitialization, you have the following options:

    Aktuelle Momentaufnahme verwendenUse the current snapshot
    Wählen Sie diese Option aus, wenn die aktuelle Momentaufnahme beim nächsten Ausführen des Verteilungs- oder Merge-Agents auf den Abonnenten angewendet werden soll.Select to apply the current snapshot to the Subscriber the next time the Distribution Agent or Merge Agent runs. Wenn keine gültige Momentaufnahme verfügbar ist, kann diese Option nicht ausgewählt werden.If there is no valid snapshot available, this option cannot be selected.

    Neue Momentaufnahme verwendenUse a new snapshot
    Wählen Sie diese Option aus, wenn das Abonnement mithilfe einer neuen Momentaufnahme erneut initialisiert werden soll.Select to reinitialize the subscription with a new snapshot. Die Momentaufnahme kann erst auf den Abonnenten angewendet werden, nachdem sie vom Momentaufnahme-Agent generiert wurde.The snapshot can be applied to the Subscriber only after it has been generated by the Snapshot Agent. Wenn die Ausführung des Momentaufnahme-Agents auf einem Zeitplan basiert, wird das Abonnement erst nach der nächsten zeitplangesteuerten Ausführung des Momentaufnahme-Agents initialisiert.If the Snapshot Agent is set to run on a schedule, the subscription is not reinitialized until after the next scheduled Snapshot Agent run. Wählen Sie die Option Neue Momentaufnahme jetzt generieren , um den Momentaufnahme-Agent sofort zu starten.Select Generate the new snapshot now to start the Snapshot Agent immediately.

    Unsynchronisierte Änderungen am Abonnenten vor der erneuten Initialisierung hochladenUpload unsynchronized changes before reinitialization
    Nur für Mergereplikationen zulässig.Merge replication only. Wählen Sie diese Option aus, um alle ausstehenden Änderungen aus der Abonnementdatenbank herunterzuladen, bevor die Daten des Abonnenten durch eine Momentaufnahme überschrieben werden.Select to upload any pending changes from the subscription database before the data at the Subscriber is overwritten with a snapshot.

    Wenn Sie einen parametrisierten Filter hinzufügen, löschen oder ändern, können ausstehende Änderungen auf dem Abonnenten während der erneuten Initialisierung nicht auf den Verleger hochgeladen werden.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. Ein Abonnement wird erneut initialisiert, sobald es wieder synchronisiert wird: Der Verteilungs-Agent (bei einer Transaktionsreplikation) bzw. der Merge-Agent (bei einer Mergereplikation) wendet auf alle Abonnenten mit einem Abonnement, das für eine erneute Initialisierung gekennzeichnet ist, die jeweils neueste Momentaufnahme an.A subscription is reinitialized the next time it is synchronized: the Distribution Agent (for transactional replication) or Merge Agent (for merge replication) applies the most recent snapshot to each Subscriber that has a subscription marked for reinitialization. Weitere Informationen zum Synchronisieren von Abonnements finden Sie unter Synchronize a Push Subscription und Synchronize a Pull Subscriptionverfügbar ist.For more information about synchronizing subscriptions, see Synchronize a Push Subscription and Synchronize a Pull Subscription.

So kennzeichnen Sie ein einzelnes Push- oder Pullabonnement für die erneute Initialisierung in SQL Server Management Studio (auf dem Verleger)To mark a single push or pull subscription for reinitialization 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 mit dem Abonnement, das erneut initialisiert werden soll.Expand the publication that has the subscription you want to reinitialize.

  4. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Erneut initialisieren.Right-click the subscription, and then click Reinitialize.

  5. Wählen Sie im Dialogfeld Abonnements erneut initialisieren die gewünschten Optionen aus, und klicken Sie dann auf Für erneute Initialisierung kennzeichnen.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

So kennzeichnen Sie ein einzelnes Pullabonnement für die erneute Initialisierung in SQL Server Management Studio (auf dem Abonnenten)To mark a single pull subscription for reinitialization 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 Abonnement, und klicken Sie dann auf Erneut initialisieren.Right-click the subscription, and then click Reinitialize.

  4. Klicken Sie im angezeigten Bestätigungsdialogfeld auf Ja.In the confirmation dialog box that is displayed, click Yes.

So kennzeichnen Sie alle Abonnements für die erneute Initialisierung in SQL Server Management StudioTo mark all subscriptions for reinitialization in Management Studio

  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. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung mit den Abonnements, die erneut initialisiert werden sollen, und klicken Sie dann auf Alle Abonnements erneut initialisieren.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  4. Wählen Sie im Dialogfeld Abonnements erneut initialisieren die gewünschten Optionen aus, und klicken Sie dann auf Für erneute Initialisierung kennzeichnen.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

So kennzeichnen Sie ein einzelnes Push- oder Pullabonnement für die erneute Initialisierung im ReplikationsmonitorTo mark a single push or pull subscription for reinitialization 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 erneut initialisieren möchten, und klicken Sie dann auf Abonnement erneut initialisieren.Right-click the subscription you want to reinitialize, and then click Reinitialize Subscription.

  4. Wählen Sie im Dialogfeld Abonnements erneut initialisieren die gewünschten Optionen aus, und klicken Sie dann auf Für erneute Initialisierung kennzeichnen.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

So kennzeichnen Sie alle Abonnements für die erneute Initialisierung im ReplikationsmonitorTo mark all subscriptions for reinitialization in Replication Monitor

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

  2. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung mit den Abonnements, die erneut initialisiert werden sollen, und klicken Sie dann auf Alle Abonnements erneut initialisieren.Right-click the publication with subscriptions you want to reinitialize, and then click Reinitialize All Subscriptions.

  3. Wählen Sie im Dialogfeld Abonnements erneut initialisieren die gewünschten Optionen aus, und klicken Sie dann auf Für erneute Initialisierung kennzeichnen.In the Reinitialize Subscription(s) dialog box, select options, and then click Mark for Reinitialization.

Verwenden von Transact-SQLUsing Transact-SQL

Abonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert erneut initialisiert werden.Subscriptions can be reinitialized programmatically using replication stored procedures. Welche gespeicherte Prozedur verwendet wird, hängt dem Typ des Abonnements (d. h. Push- oder Pullabonnement) und vom Typ der Veröffentlichung ab, zu der das Abonnement gehört.The stored procedure that is used depends on the type of subscription (push or pull) and the type of publication to which the subscription belongs.

So initialisieren Sie ein Pullabonnement für eine Transaktionsveröffentlichung erneutTo reinitialize a pull subscription to a transactional publication

  1. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_reinitpullsubscription (Transact-SQL) aus.At the Subscriber on the subscription database, execute sp_reinitpullsubscription (Transact-SQL). Geben Sie @publisher, @publisher_db und @publication an.Specify @publisher, @publisher_db, and @publication. Damit wird das Abonnement für die Neuinitialisierung bei der nächsten Ausführung des Verteilungs-Agents markiert.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. (Optional) Starten Sie den Verteilungs-Agent auf dem Abonnenten, um das Abonnement zu synchronisieren.(Optional) Start the Distribution Agent at the Subscriber to synchronize the subscription. Weitere Informationen finden Sie unter Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

So initialisieren Sie ein Pushabonnement für eine Transaktionsveröffentlichung erneutTo reinitialize a push subscription to a transactional publication

  1. Führen Sie auf dem Verleger sp_reinitsubscription (Transact-SQL) aus.At the Publisher, execute sp_reinitsubscription (Transact-SQL). Geben Sie @publication, @subscriber und @destination_db an.Specify @publication, @subscriber, and @destination_db. Damit wird das Abonnement für die Neuinitialisierung bei der nächsten Ausführung des Verteilungs-Agents markiert.This marks the subscription for reinitialization the next time the Distribution Agent runs.

  2. (Optional) Starten Sie den Verteilungs-Agent auf dem Verteiler, um das Abonnement zu synchronisieren.(Optional) Start the Distribution Agent at the Distributor to synchronize the subscription. Weitere Informationen finden Sie unter Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

So initialisieren Sie ein Pullabonnement mit einer Mergeveröffentlichung erneutTo reinitialize a pull subscription to a merge publication

  1. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_reinitmergepullsubscription (Transact-SQL) aus.At the Subscriber on the subscription database, execute sp_reinitmergepullsubscription (Transact-SQL). Geben Sie @publisher, @publisher_db und @publication an.Specify @publisher, @publisher_db, and @publication. Geben Sie zum Hochladen von Änderungen vom Abonnenten vor der Neuinitialisierung den Wert true für @upload_first an.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. Damit wird das Abonnement für die Neuinitialisierung bei der nächsten Ausführung des Merge-Agents markiert.This marks the subscription for reinitialization the next time the Merge Agent runs.

    Wichtig

    Wenn Sie einen parametrisierten Filter hinzufügen, löschen oder ändern, können ausstehende Änderungen auf dem Abonnenten während der erneuten Initialisierung nicht auf den Verleger hochgeladen werden.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. (Optional) Starten Sie den Merge-Agent auf dem Abonnenten, um das Abonnement zu synchronisieren.(Optional) Start the Merge Agent at the Subscriber to synchronize the subscription. Weitere Informationen finden Sie unter Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

So initialisieren Sie ein Pushabonnement mit einer Mergeveröffentlichung erneutTo reinitialize a push subscription to a merge publication

  1. Führen Sie auf dem Verleger sp_reinitmergesubscription (Transact-SQL) aus.At the Publisher, execute sp_reinitmergesubscription (Transact-SQL). Geben Sie @publication, @subscriber und @subscriber_db an.Specify @publication, @subscriber, and @subscriber_db. Geben Sie zum Hochladen von Änderungen vom Abonnenten vor der Neuinitialisierung den Wert true für @upload_first an.To upload changes from the Subscriber before reinitialization occurs, specify a value of true for @upload_first. Damit wird das Abonnement für die Neuinitialisierung bei der nächsten Ausführung des Verteilungs-Agents markiert.This marks the subscription for reinitialization the next time the Distribution Agent runs.

    Wichtig

    Wenn Sie einen parametrisierten Filter hinzufügen, löschen oder ändern, können ausstehende Änderungen auf dem Abonnenten während der erneuten Initialisierung nicht auf den Verleger hochgeladen werden.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

  2. (Optional) Starten Sie den Merge-Agent auf dem Verteiler, um das Abonnement zu synchronisieren.(Optional) Start the Merge Agent at the Distributor to synchronize the subscription. Weitere Informationen finden Sie unter Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

So legen Sie die Neuinitialisierungsrichtlinie während der Erstellung einer neuen Mergeveröffentlichung festTo set the reinitialization policy when creating a new merge publication

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergepublication aus, und geben Sie dabei für @automatic_reinitialization_policy einen der folgenden Werte an:At the Publisher on the publication database, execute sp_addmergepublication, specifying one of the following values for @automatic_reinitialization_policy:

    • 1 – Änderungen werden vom Abonnenten hochgeladen, bevor eine automatische Neuinitialisierung des Abonnements durchgeführt wird, die durch eine Änderung an der Veröffentlichung erforderlich wurde.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 – Änderungen am Abonnenten werden verworfen, bevor eine automatische Neuinitialisierung des Abonnements durchgeführt wird, die durch eine Änderung an der Veröffentlichung erforderlich wurde.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    Wichtig

    Wenn Sie einen parametrisierten Filter hinzufügen, löschen oder ändern, können ausstehende Änderungen auf dem Abonnenten während der erneuten Initialisierung nicht auf den Verleger hochgeladen werden.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    Weitere Informationen finden Sie unter Create a Publication.For more information, see Create a Publication.

So ändern Sie die Neuinitialisierungsrichtlinie für eine vorhandene MergeveröffentlichungTo change the reinitialization policy for an existing merge publication

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublication aus, und geben Sie dabei für @property den Wert automatic_reinitialization_policy und für @value einen der folgenden Werte an:At the Publisher on the publication database, execute sp_changemergepublication, specifying automatic_reinitialization_policy for @property and one of the following values for @value:

    • 1 – Änderungen werden vom Abonnenten hochgeladen, bevor eine automatische Neuinitialisierung des Abonnements durchgeführt wird, die durch eine Änderung an der Veröffentlichung erforderlich wurde.1 - changes are uploaded from the Subscriber before a subscription is automatically reinitialized as required by a change to the publication.

    • 0 – Änderungen am Abonnenten werden verworfen, bevor eine automatische Neuinitialisierung des Abonnements durchgeführt wird, die durch eine Änderung an der Veröffentlichung erforderlich wurde.0 - changes at the Subscriber are discarded when a subscription is automatically reinitialized as required by a change to the publication.

    Wichtig

    Wenn Sie einen parametrisierten Filter hinzufügen, löschen oder ändern, können ausstehende Änderungen auf dem Abonnenten während der erneuten Initialisierung nicht auf den Verleger hochgeladen werden.If you add, drop, or change a parameterized filter, pending changes at the Subscriber cannot be uploaded to the Publisher during reinitialization. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.If you want to upload pending changes, synchronize all subscriptions before changing the filter.

    Weitere Informationen finden Sie unter View and Modify Publication Properties.For more information, see View and Modify Publication Properties.

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

Einzelne Abonnements können für die erneute Initialisierung markiert werden, sodass während der nächsten Synchronisierung eine neue Momentaufnahme angewendet wird.Individual subscriptions can be marked for reinitialization so that during the next synchronization, a new snapshot is applied. Abonnements können mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert erneut initialisiert werden.Subscriptions can be reinitialized programmatically by using Replication Management Objects (RMO). Die zu verwendenden Klassen hängen Typ der Veröffentlichung, zu der das Abonnement gehört, und dem Typ des Abonnements ab (d. h. Push- oder Pullabonnement).The classes you use depend on the type of publication to which the subscription belongs and the type of subscription (that is, a push or pull subscription).

So initialisieren Sie ein Pullabonnement für eine Transaktionsveröffentlichung erneutTo reinitialize a pull subscription to a transactional publication

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

  2. Erstellen Sie eine Instanz der TransPullSubscription -Klasse, und legen Sie PublicationName, DatabaseName, PublisherName, PublicationDBNamesowie die Verbindung aus Schritt 1 für ConnectionContextfest.Create an instance of the TransPullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.Call the LoadProperties method to get the properties of the object.

    Hinweis

    Wenn diese Methode falsezurückgibt, wurden die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Pullabonnement ist nicht vorhanden.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Rufen Sie die Reinitialize -Methode auf.Call the Reinitialize method. Diese Methode markiert das Abonnement für die erneute Initialisierung.This method marks the subscription for reinitialization.

  5. Synchronisieren Sie das Pullabonnement.Synchronize the pull subscription. Weitere Informationen finden Sie unter Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

So initialisieren Sie ein Pushabonnement für eine Transaktionsveröffentlichung erneutTo reinitialize a push subscription to a transactional publication

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

  2. Erstellen Sie eine Instanz der TransSubscription -Klasse, und legen Sie PublicationName, DatabaseName, SubscriberName, SubscriptionDBNamesowie die Verbindung aus Schritt 1 für ConnectionContextfest.Create an instance of the TransSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.Call the LoadProperties method to get the properties of the object.

    Hinweis

    Wenn diese Methode falsezurückgibt, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Pushabonnement ist nicht vorhanden.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Rufen Sie die Reinitialize -Methode auf.Call the Reinitialize method. Diese Methode markiert das Abonnement für die erneute Initialisierung.This method marks the subscription for reinitialization.

  5. Synchronisieren Sie das Pushabonnement.Synchronize the push subscription. Weitere Informationen finden Sie unter Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

So initialisieren Sie ein Pullabonnement mit einer Mergeveröffentlichung erneutTo reinitialize a pull subscription to a merge publication

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

  2. Erstellen Sie eine Instanz der MergePullSubscription -Klasse, und legen Sie PublicationName, DatabaseName, PublisherName, PublicationDBNamesowie die Verbindung aus Schritt 1 für ConnectionContextfest.Create an instance of the MergePullSubscription class, and set PublicationName, DatabaseName, PublisherName, PublicationDBName, and the connection from step 1 for ConnectionContext.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.Call the LoadProperties method to get the properties of the object.

    Hinweis

    Wenn diese Methode falsezurückgibt, wurden die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Pullabonnement ist nicht vorhanden.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the pull subscription does not exist.

  4. Rufen Sie die Reinitialize -Methode auf.Call the Reinitialize method. Übergeben Sie den Wert true , wenn vor der erneuten Initialisierung Änderungen beim Abonnenten hochgeladen werden sollen, oder übergeben Sie den Wert false , wenn sofort erneut initialisiert und Änderungen beim Abonnenten nicht gespeichert werden sollen.Pass a value of true to upload changes at the Subscriber before reinitialization or a value of false to reinitialize and lose any pending changes at the Subscriber. Diese Methode markiert das Abonnement für die erneute Initialisierung.This method marks the subscription for reinitialization.

    Hinweis

    Änderungen können nicht hochgeladen werden, wenn das Abonnement abgelaufen ist.Changes cannot be uploaded if the subscription is expired. Weitere Informationen finden Sie unter Set the Expiration Period for Subscriptions.For more information, see Set the Expiration Period for Subscriptions.

  5. Synchronisieren Sie das Pullabonnement.Synchronize the pull subscription. Weitere Informationen finden Sie unter Synchronize a Pull Subscription.For more information, see Synchronize a Pull Subscription.

So initialisieren Sie ein Pushabonnement mit einer Mergeveröffentlichung erneutTo reinitialize a push subscription to a merge publication

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

  2. Erstellen Sie eine Instanz der MergeSubscription -Klasse, und legen Sie PublicationName, DatabaseName, SubscriberName, SubscriptionDBNamesowie die Verbindung aus Schritt 1 für ConnectionContextfest.Create an instance of the MergeSubscription class, and set PublicationName, DatabaseName, SubscriberName, SubscriptionDBName, and the connection from step 1 for ConnectionContext.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.Call the LoadProperties method to get the properties of the object.

    Hinweis

    Wenn diese Methode falsezurückgibt, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Pushabonnement ist nicht vorhanden.If this method returns false, either the subscription properties in step 2 were defined incorrectly or the push subscription does not exist.

  4. Rufen Sie die Reinitialize -Methode auf.Call the Reinitialize method. Übergeben Sie den Wert true , wenn vor der erneuten Initialisierung Änderungen beim Abonnenten hochgeladen werden sollen, oder übergeben Sie den Wert false , wenn sofort erneut initialisiert und Änderungen beim Abonnenten nicht gespeichert werden sollen.Pass a value of true to upload changes at the Subscriber before reinitialization or a value of false to reinitialize and lose any pending changes at the Subscriber. Diese Methode markiert das Abonnement für die erneute Initialisierung.This method marks the subscription for reinitialization.

    Hinweis

    Änderungen können nicht hochgeladen werden, wenn das Abonnement abgelaufen ist.Changes cannot be uploaded if the subscription is expired. Weitere Informationen finden Sie unter Set the Expiration Period for Subscriptions.For more information, see Set the Expiration Period for Subscriptions.

  5. Synchronisieren Sie das Pushabonnement.Synchronize the push subscription. Weitere Informationen finden Sie unter Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Beispiele (RMO)Examples (RMO)

Im folgenden Beispiel wird ein Pullabonnement für eine Transaktionsveröffentlichung erneut initialisiert.This example reinitializes a pull subscription to a transactional publication.

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

// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);

TransPullSubscription subscription;

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

    // Define subscription properties.
    subscription = new TransPullSubscription();
    subscription.ConnectionContext = conn;
    subscription.DatabaseName = subscriptionDbName;
    subscription.PublisherName = publisherName;
    subscription.PublicationDBName = publicationDbName;
    subscription.PublicationName = publicationName;

    // If the pull subscription and the job exists, mark the subscription
    // for reinitialization and start the agent job.
    if (subscription.LoadProperties() && subscription.AgentJobId != null)
    {
        subscription.Reinitialize();
        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)
{
    // Do appropriate error handling here.
    throw new ApplicationException("The subscription could not be reinitialized.", ex);
}
finally
{
    conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

Dim subscription As TransPullSubscription

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

    ' Define subscription properties.
    subscription = New TransPullSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = subscriptionDbName
    subscription.PublisherName = publisherName
    subscription.PublicationDBName = publicationDbName
    subscription.PublicationName = publicationName

    ' If the pull subscription and the job exists, mark the subscription
    ' for reinitialization and start the agent job.
    If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
        subscription.Reinitialize()
        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
    ' Do appropriate error handling here.
    Throw New ApplicationException("The subscription could not be reinitialized.", ex)
Finally
    conn.Disconnect()
End Try

In diesem Beispiel wird ein Pullabonnement für eine Transaktionsveröffentlichung erneut initialisiert, nachdem Änderungen beim Abonnenten hochgeladen wurden.This example reinitializes a pull subscription to a merge publication after first uploading pending changes at the Subscriber.

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

// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);

MergePullSubscription subscription;

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

    // Define subscription properties.
    subscription = new MergePullSubscription();
    subscription.ConnectionContext = conn;
    subscription.DatabaseName = subscriptionDbName;
    subscription.PublisherName = publisherName;
    subscription.PublicationDBName = publicationDbName;
    subscription.PublicationName = publicationName;

    // If the pull subscription and the job exists, mark the subscription
    // for reinitialization after upload and start the agent job.
    if (subscription.LoadProperties() && subscription.AgentJobId != null)
    {
        subscription.Reinitialize(true);
        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)
{
    // Do appropriate error handling here.
    throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
    conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)

Dim subscription As MergePullSubscription

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

    ' Define subscription properties.
    subscription = New MergePullSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = subscriptionDbName
    subscription.PublisherName = publisherName
    subscription.PublicationDBName = publicationDbName
    subscription.PublicationName = publicationName

    ' If the pull subscription and the job exists, mark the subscription
    ' for reinitialization after upload and start the agent job.
    If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
        subscription.Reinitialize(True)
        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
    ' Do appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

Weitere InformationenSee Also

Erneutes Initialisieren von Abonnements Reinitialize Subscriptions
Replication Management Objects Concepts Replication Management Objects Concepts
Replication Security Best PracticesReplication Security Best Practices