sp_marksubscriptionvalidation (Transact-SQL)

Gilt für:SQL Server

Kennzeichnet die aktuell geöffnete Transaktion als Validierungstransaktion auf Abonnementebene für den angegebenen Abonnenten. Diese gespeicherte Prozedur wird auf dem Verleger in der Veröffentlichungsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

  
sp_marksubscriptionvalidation [ @publication = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

Argumente

[ @publication = ] 'publication' Der Name der Publikation. die Veröffentlichung ist sysname, ohne Standardwert.

[ @subscriber = ] 'subscriber' Der Name des Abonnenten. Subscriber ist sysname, ohne Standardwert.

[ @destination_db = ] 'destination_db' Der Name der Zieldatenbank. destination_db ist sysname ohne Standardwert.

[ @publisher = ] 'publisher'Gibt einen Nicht-Microsoft SQL Server Publisher an. publisher ist sysname, wobei der Standardwert NULL ist.

Hinweis

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

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Bemerkungen

sp_marksubscriptionvalidation wird bei der Transaktionsreplikation verwendet.

sp_marksubscriptionvalidation unterstützt keine nicht SQL Server Abonnenten.

Bei Herausgebern ohne SQL Server 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 muss zusammen mit sp_article_validation (Transact-SQL) verwendet werden, wobei der Wert 1 für subscription_level angegeben wird, und kann mit anderen Aufrufen von sp_marksubscriptionvalidation verwendet werden, um die aktuelle offene Transaktion für andere Abonnenten zu markieren.

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 den 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. Wir empfehlen nur einen Aufruf von sp_article_validation (Transact-SQL) pro Transaktion. Dies liegt daran , dass sp_article_validation (Transact-SQL) für die Dauer der Transaktion eine freigegebene Tabellensperre für die Quelltabelle 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