Freigeben über


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 = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

Argumente

[ @publication = ] 'publication' Ist der Name der Publikation. Publikation ist sysname, ohne Standard.

[ @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" ohne Standard.

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

Hinweis

Publisher sollte nicht für eine Publikation verwendet werden, die zu einem SQL Server-Herausgeber gehört.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_marksubscriptionvalidation wird in der Transaktionsreplikation verwendet.

sp_marksubscriptionvalidation unterstützt keine Nicht-SQL Server-Abonnenten.

Bei Nicht-SQL Server-Herausgebern können Sie sp_marksubscriptionvalidation nicht innerhalb einer expliziten Transaktion ausfü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 müssen zusammen mit sp_article_validation (Transact-SQL) verwendet werden, einen Wert von 1 für subscription_level angeben und mit anderen Aufrufen von sp_marksubscriptionvalidation zum Markieren der aktuellen offenen Transaktion für andere Abonnenten verwendet werden.

Berechtigungen

Nur Mitglieder der festen Serverrolle "sysadmin" oder db_owner festen Datenbankrolle 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 die erste Transaktion artikel "art1" überprüft, während die zweite Transaktion "art2" überprüft. Beachten Sie außerdem, dass die Aufrufe von sp_marksubscriptionvalidation und sp_article_validation (Transact-SQL) in einer Transaktion gekapselt wurden. Es wird nur ein Aufruf von sp_article_validation (Transact-SQL) pro Transaktion empfohlen. Dies liegt daran, dass sp_article_validation (Transact-SQL) eine gemeinsame Tabellensperre für die Quelltabelle für die Dauer der Transaktion enthält. 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  

Weitere Informationen

Gespeicherte Systemprozeduren (Transact-SQL)
Überprüfen von replizierten Daten