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 não 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 de SQL Server.

Valores do código de retorno

0 (êxito) 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 editores não 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 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 compartilhado 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  

Consulte Também

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