sp_reinitsubscription (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Marca a assinatura para reinicialização. Esse procedimento armazenado é executado no Publicador para assinaturas push.

Convenções de sintaxe de Transact-SQL

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. artigo é sysname, com um padrão de todos. Para uma publicação de atualização imediata, o artigo deve ser tudo, caso contrário, o procedimento armazenado ignora a publicação e relata 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 todos.

[ @for_schema_change = ] 'for_schema_change' Indica se a reinicializaçã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 0, as assinaturas ativas de publicações que permitem atualização imediata são reativadas desde que toda a publicação, e não apenas alguns de seus artigos, sejam reinicializados. Isso significa que a reinicialização está ocorrendo como resultado de alterações de esquema. Se 1, as assinaturas ativas não serão reativadas até que o Snapshot Agent seja executado.

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

Observação

publisher não deve ser usado para Publicadores do SQL Server.

[ @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 instantâneo de publicação existente. invalidate_snapshot é bit, com um padrão de 0. Se 1, um novo instantâneo será gerado para a publicação.

Valores do código de retorno

0 (sucesso) ou 1 (fracasso)

Comentários

sp_reinitsubscription é usado na replicação transacional.

sp_reinitsubscription não há 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 Agente de Instantâneo 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 Agente de Distribuição 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 Agente de Distribuição sincroniza novamente as assinaturas usando o esquema e os arquivos de programa de cópia em massa mais recentes anteriormente criados pelo Agente de Instantâneo. O Agente de Distribuição ressincroniza a assinatura imediatamente após o usuário executar sp_reinitsubscription, se o Agente de Distribuição não estiver ocupado, caso contrário, a sincronização poderá ocorrer após o intervalo de mensagens (especificado pelo parâmetro de prompt de comando do Agente de Distribuição: MessageInterval).

sp_reinitsubscription não tem efeito sobre assinaturas em que o instantâneo inicial é aplicado manualmente.

Para ressincronizar assinaturas anônimas para uma publicação, passe tudo ou NULL como assinante.

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'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.

Permissões

Somente membros da função de servidor fixa sysadmin, membros da função de banco de dados fixa db_owner ou o criador da assinatura podem executar sp_reinitsubscription.

Confira também

Reinicializar uma assinatura
Reinicializar as assinaturas
Procedimentos armazenados de replicação (Transact-SQL)