sp_reinitsubscription (Transact-SQL)

Markiert das Abonnement für die erneute Initialisierung. Diese gespeicherte Prozedur wird auf dem Verleger für Pushabonnements ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_reinitsubscription [ [ @publication = ] 'publication' ]
    [ , [ @article = ] 'article' ]
        , [ @subscriber = ] 'subscriber'
    [ , [ @destination_db = ] 'destination_db']
    [ , [ @for_schema_change = ] 'for_schema_change']
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @ignore_distributor_failure = ] ignore_distributor_failure ] 
    [ , [ @invalidate_snapshot = ] invalidate_snapshot ]

Argumente

  • [ @publication=] 'publication'
    Der Name der Veröffentlichung. publication ist vom Datentyp sysname; der Standard ist ALL.

  • [ @article=] 'article'
    Der Name des Artikels. article ist vom Datentyp sysname; der Standard ist ALL. Für eine sofort aktualisierbare Veröffentlichung muss article auf all festgelegt sein; andernfalls lässt die gespeicherte Prozedur die Veröffentlichung aus und meldet einen Fehler.

  • [ @subscriber=] 'subscriber'
    Der Name des Abonnenten. subscriber ist vom Datentyp sysname und hat keinen Standard.

  • [ @destination_db=] 'destination_db'
    Der Name der Zieldatenbank. destination_db ist vom Datentyp sysname; der Standard ist ALL.

  • [ @for_schema_change=] 'for_schema_change'
    Zeigt an, ob die erneute Initialisierung als Ergebnis einer Schemaänderung bei der Veröffentlichungsdatenbank auftritt. for_schema_change ist vom Datentyp bit; der Standardwert ist 0. Bei 0 werden aktive Abonnements für Veröffentlichungen, die sofortiges Aktualisieren zulassen, erneut aktiviert, falls die gesamte Veröffentlichung, nicht nur einige Artikel darin, erneut initialisiert werden. Die erneute Initialisierung wird demnach als Ergebnis von Schemaänderungen initiiert. Bei 1 werden aktive Abonnements erst dann erneut aktiviert, wenn der Snapshot-Agent ausgeführt wird.

  • [ @publisher= ] 'publisher'
    Gibt einen Nicht-SQL Server-Verleger an. publisher ist vom Datentyp sysname; der Standard ist NULL.

    HinweisHinweis

    publisher sollte nicht für SQL Server-Verleger verwendet werden.

  • [ @ignore_distributor_failure= ] ignore_distributor_failure
    Lässt die erneute Initialisierung zu, auch wenn der Verteiler nicht vorhanden oder offline geschaltet ist. ignore_distributor_failure ist vom Datentyp bit, der Standardwert ist 0. Bei 0 tritt bei der erneuten Initialisierung ein Fehler auf, wenn der Verteiler nicht vorhanden oder offline geschaltet ist.

  • [ @invalidate_snapshot= ] invalidate_snapshot
    Erklärt den vorhandenen Veröffentlichungssnapshot für ungültig. invalidate_snapshot ist vom Datentyp bit, der Standardwert ist 0. Bei 1 wird ein neuer Snapshot für die Veröffentlichung generiert.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_reinitsubscription wird für die Transaktionsreplikation verwendet.

sp_reinitsubscription wird nicht für die Peer-to-Peer-Transaktionsreplikation unterstützt.

Für Abonnements, bei denen der Anfangssnapshot automatisch angewendet wird und bei denen die Veröffentlichung keine aktualisierbaren Abonnements zulässt, muss der Snapshot-Agent ausgeführt werden, nachdem diese gespeicherte Prozedur ausgeführt wird, sodass Programmdateien für das Schema- und Massenkopieren vorbereitet werden und die Verteilungs-Agents in der Lage sind, die Abonnements neu zu synchronisieren.

Für Abonnements, bei denen der Anfangssnapshot automatisch angewendet wird und bei denen die Veröffentlichung aktualisierbare Abonnements zulässt, führt der Verteilungs-Agent eine erneute Synchronisierung für das Abonnement durch, indem die neuesten Programmdateien für das Schema- und Massenkopieren verwendet werden, die zuvor vom Snapshot-Agent erstellt wurden. Der Verteilungs-Agent führt unmittelbar, nachdem der Benutzer sp_reinitsubscription ausgeführt hat, eine Neusynchronisierung des Abonnements durch, falls der Verteilungs-Agent nicht ausgelastet ist. Andernfalls erfolgt die Synchronisierung möglicherweise nach dem Nachrichtenintervall (die Angabe erfolgt durch den Befehlszeilenparameter MessageInterval).

sp_reinitsubscription hat keine Auswirkungen auf Abonnements, bei denen der Anfangssnapshot manuell angewendet wird.

Übergeben Sie zur Neusynchronisierung anonymer Abonnements einer Veröffentlichung für subscriber den Wert all oder NULL.

Die Transaktionsreplikation unterstützt die erneute Initialisierung von Abonnements auf Artikelebene. Der Snapshot des Artikels wird während der nächsten Synchronisierung erneut auf den Abonnenten angewendet, nachdem der Artikel für die erneute Initialisierung markiert wurde. Wenn jedoch abhängige Artikel vorhanden sind, die von demselben Abonnenten abonniert werden, kann die erneute Anwendung des Snapshots auf den Artikel möglicherweise einen Fehler erzeugen, wenn in der Veröffentlichung nicht auch abhängige Artikel unter bestimmten Umständen automatisch erneut initialisiert werden:

  • Wenn 'drop' als Vorabbefehl vor der Erstellung des entsprechenden Artikels verwendet wird, werden Artikel für schemagebundene Sichten und schemagebundene gespeicherte Prozeduren für das Basisobjekt des Artikels ebenfalls für die erneute Initialisierung markiert.

  • Wenn die Schemaoption für den Artikel das Erstellen von Skripts für die deklarative referenzielle Integrität der Primärschlüssel einbezieht, werden Artikel, die über Basistabellen mit Fremdschlüsselbeziehungen zu Basistabellen des erneut initialisierten Artikels verfügen, ebenfalls für die erneute Initialisierung markiert.

Beispiel

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorks2008R2Replica';
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks2008R2Replica]

-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription 
    @subscriber = $(SubServer),
    @destination_db = @subscriptionDB,
    @publication = @publication;
GO

-- Start the Distribution Agent.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin, Mitglieder der festen Datenbankrolle db_owner und der Ersteller des Abonnements können sp_reinitsubscription ausführen.