Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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;