Freigeben über


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.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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-Microsoft SQL Server-Verleger an. publisher ist ein Wert vom Datentyp sysname; der Standardwert ist NULL.

    HinweisHinweis

    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