sp_marksubscriptionvalidation (Transact-SQL)
Markiert die aktuell geöffnete Transaktion als Transaktion mit Überprüfung auf Abonnementebene für den angegebenen Abonnenten. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.
Syntax
sp_marksubscriptionvalidation [ @publication = ] 'publication'
, [ @subscriber = ] 'subscriber'
, [ @destination_db = ] 'destination_db'
[ , [ @publisher = ] 'publisher' ]
Argumente
[ @publication= ] 'publication'
Der Name der Veröffentlichung. publication ist vom Datentyp sysname und hat keinen Standardwert.[ @subscriber = ] 'subscriber'
Der Name des Abonnenten. subscriber ist vom Datentyp sysname und hat keinen Standardwert.[ @destination_db=] 'destination_db'
Der Name der Zieldatenbank. destination_db ist vom Datentyp sysname und hat keinen Standardwert.[ @publisher= ] 'publisher'
Gibt einen Nicht-MicrosoftSQL Server-Verleger an. publisher ist ein Wert vom Datentyp sysname; der Standardwert ist NULL.Hinweis publisher sollte nicht für Veröffentlichungen verwendet werden, die zu einem SQL Server-Verleger gehören.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_marksubscriptionvalidation wird für die Transaktionsreplikation verwendet.
sp_marksubscriptionvalidation unterstützt keine Nicht-SQL Server-Abonnenten.
Bei Nicht-SQL Server-Verlegern ist es nicht möglich, sp_marksubscriptionvalidation aus einer expliziten Transaktion heraus auszuführen. Das liegt daran, dass explizite Transaktionen nicht über die Verbindung eines Verbindungsservers unterstützt werden, die für den Zugriff auf den Verleger verwendet wird.
sp_marksubscriptionvalidation muss zusammen mit sp_article_validation (Transact-SQL) verwendet werden. Dabei muss der Wert 1 für subscription_level angegeben sein. Die Verwendung mit anderen Aufrufen an sp_marksubscriptionvalidation ist möglich, um die aktuell geöffnete Transaktion für andere Abonnenten zu markieren.
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_marksubscriptionvalidation ausführen.
Beispiel
Die folgende Abfrage kann auf die Verlegerdatenbank angewendet werden, um Befehle mit Überprüfung auf Abonnementebene bereitzustellen. Diese Befehle werden von den Verteilungs-Agents der angegebenen Abonnenten erfasst. Beachten Sie, dass mit der ersten Transaktion Artikel 'art1' überprüft wird, während mit der zweiten Transaktion 'art2' überprüft wird. Beachten Sie außerdem, dass Aufrufe von sp_marksubscriptionvalidation und sp_article_validation (Transact-SQL) in einer Transaktion gekapselt wurden. Pro Transaktion wird nur ein Aufruf von sp_article_validation (Transact-SQL) empfohlen. Dies ist darauf zurückzuführen, dass sp_article_validation (Transact-SQL) für die Dauer der Transaktion eine freigegebene Tabellensperre für die Quelltabelle einrichtet. Die Transaktion muss so kurz wie möglich sein, um die Parallelität zu maximieren.
begin tran
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub', @destination_db = 'SubDB'
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2', @destination_db = 'SubDB'
exec sp_article_validation @publication = 'pub1', @article = 'art1',
@rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,
@subscription_level = 1
commit tran
begin tran
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub', @destination_db = 'SubDB'
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2', @destination_db = 'SubDB'
exec sp_article_validation @publication = 'pub1', @article = 'art2',
@rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,
@subscription_level = 1
commit tran
Siehe auch