sp_marksubscriptionvalidation (Transact-SQL)
Aplica-se: SQL Server
Marca a transação aberta atual para ser uma transação de validação do nível de assinatura para o assinante especificado. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumentos
@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 do banco de dados de destino. @destination_db é sysname, sem padrão.
@publisher [ = ] N'editor'
Especifica um Publicador não-SQL Server. @publisher é sysname, com um padrão de NULL
.
@publisher não deve ser usado para uma publicação que pertence a um Publicador do SQL Server.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
sp_marksubscriptionvalidation
é usado na replicação transacional.
sp_marksubscriptionvalidation
não dá suporte a Assinantes não SQL Server.
Para Publicadores que não são do SQL Server, você não pode executar sp_marksubscriptionvalidation
de dentro de uma transação explícita. Isso ocorre porque não há suporte para transações explícitas na conexão de servidor vinculada usada para acessar o Publicador.
sp_marksubscriptionvalidation
deve ser usado junto 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.
Permissões
Somente membros da função de servidor fixa sysadmin ou db_owner função de banco de dados fixa podem executar sp_marksubscriptionvalidation
.
Exemplos
A consulta seguinte pode ser aplicada ao banco de dados de publicação para publicar comandos de validação de nível de assinatura. Esses comandos são retirados pelos Distribution Agents de 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 são encapsuladas em uma transação. Recomendamos apenas uma chamada para sp_article_validation por transação. Isso ocorre porque sp_article_validation mantém um bloqueio de tabela compartilhada na tabela de origem durante a transação. A transação deve ser curta para maximizar simultaneidade.
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;