sys.sp_marksubscriptionvalidation (Transact-SQL)

Aplica-se a: SQL Server

Marca a transação aberta atual como sendo uma transação de validação ao nível de subscrição para o assinante especificado. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

[ @publication = ] N'publicação'

O nome da publicação. @publication é sysname, sem padrão.

[ @subscriber = ] N'assinante'

O nome do Assinante. @subscriber é sysname, sem padrão.

[ @destination_db = ] N'destination_db'

O nome da base de dados de destino. @destination_db é sysname, sem padrão.

@publisher [ = ] N'editor'

Especifica um Editor de Server que não seja SQL. @publisher é sysname, com um padrão de NULL.

@publisher não deve ser usado para uma publicação que pertença a um SQL Server Publisher.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Remarks

sp_marksubscriptionvalidation é usado na replicação transacional.

sp_marksubscriptionvalidationnão suporta subscritores que não sejam do SQL Server.

Para publicadores que não são SQL Server, não pode executar sp_marksubscriptionvalidation a partir de uma transação explícita. Isto porque transações explícitas não são suportadas através da ligação ao servidor ligado usada para aceder ao Publisher.

sp_marksubscriptionvalidation deve ser usado juntamente com sp_article_validation, especificando um valor de 1 para @subscription_level, e pode ser usado com outras chamadas para sp_marksubscriptionvalidation marcar a transação aberta atual para outros assinantes.

Permissions

Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_marksubscriptionvalidation.

Examples

A seguinte consulta pode ser aplicada à base de dados de publicação para publicar comandos de validação ao nível de subscrição. Estes comandos são captados pelos Agentes de Distribuição dos Assinantes especificados. A primeira transação valida o artigo art1, enquanto a segunda transação valida art2. As chamadas para sp_marksubscriptionvalidation e sp_article_validation estão encapsuladas numa transação. Recomendamos apenas uma chamada para sp_article_validation por transação. Isto porque sp_article_validation mantém um bloqueio de tabela partilhado na tabela de origem durante a transação. Deves manter a transação curta para maximizar a concorrência.

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;