Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Marca a subscrição para reinicialização. Este procedimento armazenado é executado no Publisher para subscrições push.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_reinitsubscription
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
, [ @subscriber = ] N'subscriber'
[ , [ @destination_db = ] N'destination_db' ]
[ , [ @for_schema_change = ] for_schema_change ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
[ , [ @invalidate_snapshot = ] invalidate_snapshot ]
[ ; ]
Arguments
[ @publication = ] N'publicação'
O nome da publicação.
@publication é sysname, com um padrão de all.
@article [ = ] N'artigo'
O nome do artigo.
@article é sysname, com um padrão de all. Para uma publicação de atualização imediata, @article deve ser all. Caso contrário, o procedimento armazenado ignora a publicação e reporta um erro.
[ @subscriber = ] N'assinante'
O nome do Assinante. @subscriber é sysname, sem padrão.
[ @destination_db = ] N'destination_db'
O nome da base de dados de destino.
@destination_db é sysname, com um padrão de all.
[ @for_schema_change = ] for_schema_change
Indica se a reinicialização ocorre como resultado de uma alteração de esquema na base de dados de publicação.
@for_schema_change é bit, com um padrão de 0.
Se
0, as subscrições ativas de publicações que permitem atualização imediata são reativadas desde que toda a publicação, e não apenas alguns dos seus artigos, sejam reiniciadas. Isto significa que a reinicialização está a ser iniciada como resultado de alterações no esquema.Se
1, as subscrições ativas não são reativadas até que o Snapshot Agent seja executado.
@publisher [ = ] N'editor'
Especifica um editor que não seja SQL Server.
@publisher é sysname, com um padrão de NULL.
@publisher não devia ser usado para SQL Server editoras.
[ @ignore_distributor_failure = ] ignore_distributor_failure
Permite a reinicialização mesmo que o distribuidor não exista ou esteja offline.
@ignore_distributor_failureé bit, com um padrão de 0. Se 0, a reinicialização falhar se o distribuidor não existir ou estiver offline.
[ @invalidate_snapshot = ] invalidate_snapshot
Invalida o snapshot de publicação existente.
@invalidate_snapshot é bit, com um padrão de 0. Se 1, é gerado um novo snapshot para a publicação.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_reinitsubscription é usado na replicação transacional.
sp_reinitsubscription não é suportado para replicação transacional peer-to-peer.
Para subscrições em que o snapshot inicial é aplicado automaticamente e onde a publicação não permite subscrições atualizáveis, o Snapshot Agent deve ser executado após a execução deste procedimento armazenado, para que os ficheiros de esquema e cópia em massa sejam preparados e os Agentes de Distribuição possam então ressincronizar as subscrições.
Para subscrições em que o snapshot inicial é aplicado automaticamente e a publicação permite subscrições atualizáveis, o Distribution Agent ressincroniza a subscrição usando os ficheiros de esquema e cópias em massa mais recentes anteriormente criados pelo Snapshot Agent. O Distribution Agent ressincroniza a subscrição imediatamente após o utilizador executar sp_reinitsubscription, se o Distribution Agent não estiver ocupado. Caso contrário, a sincronização pode ocorrer após o intervalo da mensagem (especificado pelo parâmetro MessageIntervaldo prompt de comando do Distribution Agent).
sp_reinitsubscription não tem efeito nas subscrições em que o snapshot inicial é aplicado manualmente.
Para ressincronizar subscrições anónimas a uma publicação, passe em all ou NULL como @subscriber.
A replicação transacional suporta a reinicialização por subscrição ao nível do artigo. O instantâneo do artigo é reaplicado no Assinante durante a sincronização seguinte, após o artigo ser marcado para reinicialização. No entanto, se existirem artigos dependentes que também sejam subscritos pelo mesmo Assinante, a reaplicação do snapshot no artigo pode falhar, a menos que os artigos dependentes na publicação também sejam automaticamente reinicializados em certas circunstâncias:
Se o comando de pré-criação no artigo for
drop, os artigos para visualizações limitadas ao esquema e procedimentos armazenados limitados ao esquema no objeto base desse artigo também são marcados para reinicialização.Se a opção de esquema no artigo incluir scripting da integridade referencial declarada nas chaves primárias, os artigos que têm tabelas base, com relações de chave estrangeira para as tabelas base do artigo reinicializado, também são marcados para reinicialização.
Examples
-- 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'AdventureWorks2022Replica';
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorks2022Replica]
-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription
@subscriber = $(SubServer),
@destination_db = @subscriptionDB,
@publication = @publication;
GO
-- Start the Distribution Agent.
Permissions
Apenas os membros do papel de servidor fixo de sysadmin , os membros do papel de base de dados fixa db_owner ou o criador da subscrição podem executar sp_reinitsubscription.