sp_marksubscriptionvalidation (Transact-SQL)
Gilt für: SQL Server
Markiert die aktuelle geöffnete Transaktion als Überprüfungstransaktion auf Abonnementebene für den angegebenen Abonnenten. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der Veröffentlichung. @publication ist "sysname" ohne Standard.
[ @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" ohne Standard.
[ @publisher = ] N'publisher'
Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL
.
@publisher sollte nicht für eine Publikation verwendet werden, die zu einem SQL Server-Herausgeber gehört.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
sp_marksubscriptionvalidation
wird in der Transaktionsreplikation verwendet.
sp_marksubscriptionvalidation
unterstützt nicht SQL Server-Abonnenten.
Bei Nicht-SQL Server-Herausgebern können Sie nicht innerhalb einer expliziten Transaktion ausgeführt werden sp_marksubscriptionvalidation
. Dies liegt daran, dass explizite Transaktionen nicht über die verknüpfte Serververbindung unterstützt werden, die für den Zugriff auf publisher verwendet wird.
sp_marksubscriptionvalidation
muss zusammen mit sp_article_validation verwendet werden, wobei ein Wert 1
für @subscription_level angegeben wird und mit anderen Aufrufen verwendet werden kann, um sp_marksubscriptionvalidation
die aktuelle offene Transaktion für andere Abonnenten zu kennzeichnen.
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_marksubscriptionvalidation
.
Beispiele
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. Die erste Transaktion überprüft artikel art1
, während die zweite Transaktion überprüft art2
wird. Die Aufrufe und sp_marksubscriptionvalidation
sp_article_validation werden in einer Transaktion gekapselt. Es wird nur ein Aufruf von sp_article_validation pro Transaktion empfohlen. Dies liegt daran, dass sp_article_validation eine freigegebene Tabellensperre für die Quelltabelle während der Transaktion enthält. Die Transaktion muss so kurz wie möglich sein, um die Parallelität zu maximieren.
BEGIN TRANSACTION;
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 TRANSACTION;
BEGIN TRANSACTION;
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 TRANSACTION;