Compartilhar via


sp_marksubscriptionvalidation (Transact-SQL)

Aplica-se a: 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 = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

Argumentos

[ @publication = ] 'publication' É o nome da publicação. publication é sysname, sem padrão.

[ @subscriber = ] 'subscriber' É o nome do Assinante. subscriber é sysname, sem padrão.

[ @destination_db = ] 'destination_db' É o nome do banco de dados de destino. destination_db é sysname, sem padrão.

[ @publisher = ] 'publisher' Especifica um Publicador que não seja do Microsoft SQL Server. publisher é sysname, com um padrão de NULL.

Observação

publisher não deve ser usado para uma publicação que pertença 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 oferece 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 porque transações explícitas não têm suporte em conexão de servidor vinculada usada para acessar o Editor.

sp_marksubscriptionvalidation deve ser usado junto com o sp_article_validation (Transact-SQL), especificando um valor de 1 para subscription_level, e pode ser usado com outras chamadas para sp_marksubscriptionvalidation para 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.

Exemplo

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. Observe que a primeira transação valida o artigo 'art1', enquanto a segunda transação valida 'art2'. Observe também que as chamadas para sp_marksubscriptionvalidation e sp_article_validation (Transact-SQL) foram encapsuladas em uma transação. Recomendamos apenas uma chamada para sp_article_validation (Transact-SQL) por transação. Isso ocorre porque sp_article_validation (Transact-SQL) 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 tran  
  
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 tran  
  
begin tran  
  
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 tran  

Confira também

Procedimentos armazenados do sistema (Transact-SQL)
Validar os dados replicados