sp_reinitsubscription (Transact-SQL)
Gilt für: SQL Server Azure 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 = ] N'publication' ]
[ , [ @article = ] N'article' ]
, [ @subscriber = ] N'subscriber'
[ , [ @destination_db = ] N'destination_db' ]
[ , [ @for_schema_change = ] for_schema_change ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
[ , [ @invalidate_snapshot = ] invalidate_snapshot ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der Veröffentlichung. @publication ist "sysname" mit der Standardeinstellung "all
.
[ @article = ] N'article'
Der Name des Artikels. @article ist "sysname" mit der Standardeinstellung "all
. Für eine sofortige Aktualisierung der Publikation muss @article sein all
. Andernfalls überspringt die gespeicherte Prozedur die Publikation und meldet einen Fehler.
[ @subscriber = ] N'subscriber'
Den Namen des Abonnenten. @subscriber ist "sysname" ohne Standard.
[ @destination_db = ] N'destination_db'
Der Name der Zieldatenbank. @destination_db ist "sysname" mit der Standardeinstellung "all
.
[ @for_schema_change = ] for_schema_change
Gibt an, ob eine Schemaänderung in der Veröffentlichungsdatenbank eine erneute Initialisierung verursacht. @for_schema_change ist bit, mit einem Standardwert von 0
.
Wenn
0
aktive Abonnements für Publikationen, die eine sofortige Aktualisierung ermöglichen, 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
aktive Abonnements erst reaktiviert werden, wenn die Momentaufnahmen-Agent ausgeführt wird.
[ @publisher = ] N'publisher'
Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL
.
@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 einem Standardwert von 0
. Wenn 0
die Erneute Initialisierung fehlschlägt, wenn der Distributor nicht vorhanden ist oder offline ist.
[ @invalidate_snapshot = ] invalidate_snapshot
Erklärt die vorhandene Veröffentlichungsmomentaufnahme für ungültig. @invalidate_snapshot ist bit, mit einem Standardwert von 0
. Wenn 1
eine neue Momentaufnahme für die Publikation generiert wird.
Rückgabecodewerte
0
(erfolgreich) 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 anfängliche Momentaufnahme automatisch angewendet wird und die Publikation keine aktualisierbaren Abonnements zulässt, muss die Momentaufnahmen-Agent ausgeführt werden, nachdem diese gespeicherte Prozedur ausgeführt wurde, damit Schema- und Massenkopieprogrammdateien vorbereitet werden und die Verteilungs-Agent dann die Abonnements erneut synchronisieren können.
Für Abonnements, bei denen die anfängliche Momentaufnahme automatisch angewendet wird und die Publikation aktualisierbare Abonnements zulässt, synchronisiert das Verteilungs-Agent das Abonnement mit dem neuesten Schema und Massenkopierprogrammdateien, die zuvor von der Momentaufnahmen-Agent erstellt wurden. Die Verteilungs-Agent synchronisiert das Abonnement unmittelbar nach der Ausführung sp_reinitsubscription
des Benutzers erneut, wenn der Verteilungs-Agent nicht ausgelastet ist. Andernfalls kann die Synchronisierung nach dem Meldungsintervall (durch Verteilungs-Agent Befehlszeilenparameter MessageInterval
angegeben) auftreten.
sp_reinitsubscription
hat keine Auswirkungen auf Abonnements, bei denen die anfängliche Momentaufnahme manuell angewendet wird.
Wenn Sie anonyme Abonnements mit einer Publikation erneut synchronisieren möchten, übergeben all
Sie es oder NULL
als @subscriber.
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 der Präcreation-Befehl für den Artikel lautet
drop
, werden artikel für schemagebundene Ansichten und schemagebundene gespeicherte Prozeduren für das Basisobjekt dieses Artikels auch für die Erneute Initialisierung markiert.Wenn die Schemaoption für den Artikel skripting der deklarierten referenziellen Integrität für die Primärschlüssel enthält, werden Auch Artikel mit Basistabellen mit Fremdschlüsselbeziehungen zu Basistabellen des neu initialisierten Artikels für die Erneute Initialisierung markiert.
Beispiele
-- 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 ausgeführt werden sp_reinitsubscription
.