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 = ] 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 art2wird. 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;