Compartilhar via


sp_reinitsubscription (Transact-SQL)

Aplica-se a: SQL Server Instâ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 = ] 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 ]
[ ; ]

Argumentos

@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 ignorará a publicação e relatará um erro.

@subscriber [ = ] N'assinante'

O nome do Assinante. @subscriber é sysname, sem padrão.

@destination_db [ = ] N'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 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 reinicializadas. 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 [ = ] N'editor'

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

@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 da 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 (falha).

Comentários

sp_reinitsubscription é usado na replicação transacional.

sp_reinitsubscription não há suporte para replicação transacional ponto a ponto.

Para assinaturas em que o instantâneo inicial é aplicado automaticamente e em que a publicação não permite assinaturas atualizáveis, o Snapshot Agent deve ser executado após a execução desse procedimento armazenado para que o esquema e os arquivos de programa de cópia em massa sejam preparados e os Distribution Agents possam ressincronizar as assinaturas.

Para assinaturas em que o instantâneo inicial é aplicado automaticamente e a publicação permite assinaturas atualizáveis, o Distribution Agent ressincroniza a assinatura usando o esquema mais recente e copia em massa os arquivos de programa criados anteriormente pelo Snapshot Agent. O Distribution Agent ressincroniza a assinatura imediatamente após a execução sp_reinitsubscriptiondo usuário, se o Distribution Agent não estiver ocupado. Caso contrário, a sincronização poderá ocorrer após o intervalo de mensagem (especificado pelo parâmetro MessageIntervalde prompt de comando do Distribution Agent).

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

Para ressincronizar assinaturas anônimas de uma publicação, passe ou all 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 no artigo for drop, artigos para exibições associadas a esquema e procedimentos armazenados associados a esquema no objeto base desse artigo também será marcado para reinicialização.

  • Se a opção de esquema no artigo incluir script de integridade referencial declarada nas chaves primárias, os artigos que têm tabelas base, com relações de chave estrangeira para tabelas base do artigo reinicializado, também serão marcados para reinicialização.

Exemplos

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