sp_reinitsubscription (Transact-SQL)
Marca a assinatura para reinicialização. Esse procedimento armazenado é executado no Publicador para assinaturas push.
Sintaxe
sp_reinitsubscription [ [ @publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
, [ @subscriber = ] 'subscriber'
[ , [ @destination_db = ] 'destination_db']
[ , [ @for_schema_change = ] 'for_schema_change']
[ , [ @publisher = ] 'publisher' ]
[ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
[ , [ @invalidate_snapshot = ] invalidate_snapshot ]
Argumentos
[ @publication=] 'publication'
É o nome da publicação. publication é sysname, com um padrão de all.[ @article=] 'article'
É o nome do artigo. article é sysname, com um padrão de all. Para uma publicação da atualização imediata, article deve ser all; caso contrário, o procedimento armazenado ignora a publicação e informa um erro.[ @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, com um padrão de all.[ @for_schema_change=] 'for_schema_change'
Indica se a inicialização ocorre como resultado de uma alteração de esquema no banco de dados de publicação. for_schema_change é bit, com um padrão de 0. Se for 0, assinaturas ativas para publicações que permitem atualização imediata serão reativadas quando toda a publicação, e não apenas alguns de seus artigos, for reiniciada. Isso significa que a reinicialização está ocorrendo como resultado de alterações de esquema. Se for 1, as assinaturas ativas não serão reativadas até que o Snapshot Agent seja executado.[ @publisher= ] 'publisher'
Especifica um Publicador não-SQL Server. publisher é sysname, com um padrão de NULL.Observação publisher não deve ser usado para Editores SQL Server.
[ @ignore_distributor_failure= ] ignore_distributor_failure
Permite reiniciar mesmo que o Distribuidor não exista ou esteja offline. ignore_distributor_failure é bit, com um padrão de 0. Se for 0, a reinicialização falhará se o Distribuidor não existir ou estiver offline.[ @invalidate_snapshot= ] invalidate_snapshot
Invalida o instantâneo de publicação existente. invalidate_snapshot é bit, com um padrão de 0. Se for 1, um instantâneo novo será gerado para a publicação.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_reinitsubscription é usado em replicação transacional.
sp_reinitsubscription não tem suporte para replicação transacional ponto a ponto.
Para assinaturas onde o instantâneo inicial é aplicado automaticamente e onde a publicação não permite assinaturas atualizáveis, o Snapshot Agent deve ser executado depois que esse procedimento armazenado é executado para que o esquema e os arquivos de programa de cópia em massa sejam preparados e o Distribution Agent possa então sincronizar novamente as assinaturas.
Para assinaturas onde o instantâneo inicial é aplicado automaticamente e onde a publicação permite assinaturas atualizáveis, o Distribution Agent sincroniza novamente as assinaturas usando o esquema e os arquivos de programa de cópia em massa mais recentes anteriormente criados pelo Snapshot Agent. O Distribution Agent sincroniza novamente as assinaturas imediatamente depois que o usuário executa sp_reinitsubscription, se o Distribution Agent não estiver ocupado; caso contrário, a sincronização pode ocorrer depois do intervalo da mensagem (especificado pelo parâmetro de prompt de comando do Distribution Agent: MessageInterval).
sp_reinitsubscription não tem efeito em assinaturas onde o instantâneo inicial é aplicado manualmente.
Para sincronizar novamente assinaturas anônimas em uma publicação, passe all ou NULL como subscriber.
A replicação Transacional dá suporte à reinicialização de assinatura no nível do artigo. O instantâneo do artigo é reaplicado no Assinante durante a próxima sincronização, depois que o artigo é marcado para reinicialização. No entanto, se houver artigos dependentes também assinados pelo mesmo Assinante, a reaplicação do instantâneo no artigo poderá falhar, a menos que os artigos dependentes na publicação sejam também automaticamente reiniciados em certas circunstâncias.
Se o comando de pré-criação do artigo for descartado, artigos de exibições associadas a esquema e procedimentos armazenados associados a esquema no objeto base daquele artigo serão também marcados para reinicialização.
Se a opção de esquema no artigo incluir geração de script para integridade referencial declarada de chaves primárias, artigos que têm tabelas base com relações de chave estrangeira com as tabelas base do artigo reiniciado também serão marcados para reinicialização.
Exemplo
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorksReplica';
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorksReplica]
-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription
@subscriber = $(SubServer),
@destination_db = @subscriptionDB,
@publication = @publication;
GO
-- Start the Distribution Agent.
Permissões
Somente membros da função de servidor fixa sysadmin, ou da função de banco de dados fixa db_owner ou o criador da assinatura podem executar sp_reinitsubscription.
Consulte também