sp_marksubscriptionvalidation (Transact-SQL)
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 de publicação.
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-MicrosoftSQL Server. publisher é sysname, com um padrão de NULL.Observação publisher não deveria ser usado para uma publicação que pertence a um Publicador SQL Server.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_marksubscriptionvalidation é usado em replicação transacional.
sp_marksubscriptionvalidation não oferece suporte a Assinantes não-SQL Server.
Para Publicadores não-SQL Server, você não pode executar sp_marksubscriptionvalidation de dentro 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 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 atual aberta para outros assinantes.
Permissões
Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner 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. É recomendável somente uma chamada para sp_article_validation (Transact-SQL) por transação. Isso 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
Consulte também