sys.sp_marksubscriptionvalidation (Transact-SQL)

platí pro:SQL Server

Označí aktuální otevřenou transakci jako validační transakci na úrovni předplatného pro určeného odběratele. Tato uložená procedura se spustí v Publisheru v databázi publikace.

Transact-SQL konvence syntaxe

Syntax

sys.sp_marksubscriptionvalidation
    [ @publication = ] N'publication'
    , [ @subscriber = ] N'subscriber'
    , [ @destination_db = ] N'destination_db'
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Arguments

[ @publication = ] N'publication'

Název publikace. @publication je sysname, bez výchozího nastavení.

[ @subscriber = ] N'odběratel'

Název odběratele. @subscriber je sysname , bez výchozího nastavení.

[ @destination_db = ] N'destination_db'

Název cílové databáze. @destination_db je sysname, bez výchozího nastavení.

[ @publisher = ] N'vydavatele'

Specifikuje vydavatele mimo SQL Server. @publisher je sysname s výchozím nastavením NULL.

@publisher by nemělo být používáno pro publikaci, která patří k SQL Server Publisher.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Remarks

sp_marksubscriptionvalidation se používá v transakční replikaci.

sp_marksubscriptionvalidationnepodporuje ne-SQL Server Subscribers.

U vydavatelů mimo SQL Server nelze provádět sp_marksubscriptionvalidation přímo z explicitní transakce. Je to proto, že explicitní transakce nejsou podporovány přes propojené serverové připojení používané k přístupu k Publisher.

sp_marksubscriptionvalidation musí být použit společně s sp_article_validation, specifikující hodnotu 1 pro @subscription_level, a může být použit s dalšími volacími linkami k sp_marksubscriptionvalidation označení aktuálně otevřené transakce pro ostatní odběratele.

Permissions

Pouze členové role pevného serveru správce systému nebo role pevné databáze db_owner mohou vykonávat sp_marksubscriptionvalidation.

Examples

Následující dotaz lze aplikovat na publikační databázi pro zveřejnění validačních příkazů na úrovni předplatného. Tyto příkazy jsou zachyceny distribučními agenty určených předplatitelů. První transakce ověřuje článek art1, zatímco druhá transakce ověřuje art2. Volací linky a sp_marksubscriptionvalidationsp_article_validation jsou obsaženy v transakci. Doporučujeme pouze jeden hovor sp_article_validation na transakci. Je to proto, že sp_article_validation během transakce drží zámek sdílené tabulky na zdrojové tabulce. Měli byste držet transakci krátkou, abyste maximalizovali souběžnost.

BEGIN TRANSACTION;

EXECUTE sp_marksubscriptionvalidation
    @publication = 'pub1',
    @subscriber = 'Sub',
    @destination_db = 'SubDB';

EXECUTE sp_marksubscriptionvalidation
    @publication = 'pub1',
    @subscriber = 'Sub2',
    @destination_db = 'SubDB';

EXECUTE sp_article_validation
    @publication = 'pub1',
    @article = 'art1',
    @rowcount_only = 0,
    @full_or_fast = 0,
    @shutdown_agent = 0,
    @subscription_level = 1;

COMMIT TRANSACTION;

BEGIN TRANSACTION;

EXECUTE sp_marksubscriptionvalidation
    @publication = 'pub1',
    @subscriber = 'Sub',
    @destination_db = 'SubDB';

EXECUTE sp_marksubscriptionvalidation
    @publication = 'pub1',
    @subscriber = 'Sub2',
    @destination_db = 'SubDB';

EXECUTE sp_article_validation
    @publication = 'pub1',
    @article = 'art2',
    @rowcount_only = 0,
    @full_or_fast = 0,
    @shutdown_agent = 0,
    @subscription_level = 1;

COMMIT TRANSACTION;