sp_reinitsubscription (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

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

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' Ist der Name der Publikation. Die Publikation ist "sysname", wobei die Standardeinstellung "alle" ist.

[ @article = ] 'article' Ist der Name des Artikels. Der Artikel ist "sysname", wobei der Standardwert "alle" ist. Für eine sofortige Aktualisierung der Publikation muss der Artikel alle sein. Andernfalls überspringt die gespeicherte Prozedur die Publikation und meldet einen Fehler.

[ @subscriber = ] 'subscriber' Ist der Name des Abonnenten. subscriber is sysname, with no default.

[ @destination_db = ] 'destination_db' Ist der Name der Zieldatenbank. destination_db ist "sysname", wobei die Standardeinstellung "alle" ist.

[ @for_schema_change = ] 'for_schema_change' Gibt an, ob die Erneute Initialisierung als Ergebnis einer Schemaänderung in der Publikationsdatenbank erfolgt. for_schema_change ist Bit mit der Standardeinstellung 0. Wenn 0, aktive Abonnements für Publikationen, die eine sofortige Aktualisierung zulassen, reaktiviert werden, solange die gesamte Publikation und nicht nur einige seiner Artikel neu initialisiert werden. Die erneute Initialisierung wird demnach als Ergebnis von Schemaänderungen initiiert. Wenn 1, werden aktive Abonnements erst reaktiviert, wenn die Momentaufnahmen-Agent ausgeführt wird.

[ @publisher = ] 'publisher' Gibt einen Nicht-SQL Server-Herausgeber an. Publisher ist "sysname" mit dem Standardwert NULL.

Hinweis

Publisher sollte nicht für SQL Server-Herausgeber verwendet werden.

[ @ignore_distributor_failure = ] ignore_distributor_failure Ermöglicht die Erneute Initialisierung, auch wenn der Distributor nicht vorhanden ist oder offline ist. ignore_distributor_failure ist Bit mit der Standardeinstellung 0. Wenn 0, schlägt die Erneute Initialisierung fehl, wenn der Distributor nicht vorhanden ist oder offline ist.

[ @invalidate_snapshot = ] invalidate_snapshotUngültige Momentaufnahme der vorhandenen Publikation. invalidate_Momentaufnahme ist Bit mit der Standardeinstellung 0. Wenn 1, wird eine neue Momentaufnahme für die Publikation generiert.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_reinitsubscription wird in der Transaktionsreplikation verwendet.

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

Für Abonnements, bei denen die Anfangsmomentaufnahme automatisch angewendet wird und bei denen die Veröffentlichung keine aktualisierbaren Abonnements zulässt, muss der Momentaufnahme-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 die Anfangsmomentaufnahme 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 Momentaufnahme-Agent erstellt wurden. Die Verteilungs-Agent synchronisiert das Abonnement unmittelbar nach ausführung des Benutzers sp_reinitsubscription, wenn der Verteilungs-Agent nicht ausgelastet ist. Andernfalls kann die Synchronisierung nach dem Meldungsintervall (durch Verteilungs-Agent Befehlszeilenparameter: MessageInterval) angegeben werden.

sp_reinitsubscription hat keine Auswirkungen auf Abonnements, bei denen die anfängliche Momentaufnahme manuell angewendet wird.

Um anonyme Abonnements mit einer Publikation erneut zu synchronisieren, übergeben Sie alle oder NULL als Abonnent.

Die Transaktionsreplikation unterstützt die erneute Initialisierung von Abonnements auf Artikelebene. Die Momentaufnahme 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 der Momentaufnahme 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'AdventureWorks2022Replica';
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks2022Replica]

-- 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, Member der db_owner festen Datenbankrolle oder der Ersteller des Abonnements können sp_reinitsubscription ausführen.

Weitere Informationen

Erneutes Initialisieren eines Abonnements
Erneutes Initialisieren von Abonnements
Gespeicherte Replikationsprozeduren (Transact-SQL)