sp_reinitsubscription (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Marca las suscripciones para reinicialización. Este procedimiento almacenado se ejecuta en el publicador para suscripciones de inserción.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
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' Es el nombre de la publicación. publication es sysname, con un valor predeterminado de todos.

[ @article = ] 'article' Es el nombre del artículo. article es sysname, con un valor predeterminado de todos. Para una publicación de actualización inmediata, el artículo debe ser todo; de lo contrario, el procedimiento almacenado omite la publicación e informa de un error.

[ @subscriber = ] 'subscriber' Es el nombre del suscriptor. subscriber es sysname, sin valor predeterminado.

[ @destination_db = ] 'destination_db' Es el nombre de la base de datos de destino. destination_db es sysname, con un valor predeterminado de todos.

[ @for_schema_change = ] 'for_schema_change' Indica si la reinicialización se produce como resultado de un cambio de esquema en la base de datos de publicación. for_schema_change es bit, con un valor predeterminado de 0. Si es 0, las suscripciones activas para publicaciones que permiten la actualización inmediata se reactivan siempre que toda la publicación, y no solo algunos de sus artículos, se reinicializan. Esto significa que la reinicialización se produce como resultado de un cambio de esquema. Si es 1, las suscripciones activas no se reactivan hasta que se ejecute el Agente de instantáneas.

[ @publisher = ] 'publisher' Especifica un publicador que no es de SQL Server. publisher es sysname, con un valor predeterminado de NULL.

Nota:

publisher no debe usarse para publicadores de SQL Server.

[ @ignore_distributor_failure = ] ignore_distributor_failure Permite reinicialización incluso si el distribuidor no existe o está sin conexión. ignore_distributor_failure es bit, con un valor predeterminado de 0. Si es 0, se produce un error en la reinicialización si el distribuidor no existe o está sin conexión.

[ @invalidate_snapshot = ] invalidate_snapshot Invalida la instantánea de publicación existente. invalidate_snapshot es bit, con un valor predeterminado de 0. Si es 1, se genera una nueva instantánea para la publicación.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_reinitsubscription se usa en la replicación transaccional.

sp_reinitsubscription no se admite para la replicación transaccional punto a punto.

Para aquellas suscripciones en las que se aplica automáticamente la instantánea inicial y en las que la publicación no admite suscripciones actualizables, es necesario ejecutar el Agente de instantáneas después de ejecutar el procedimiento almacenado a fin de que el esquema y los archivos del programa de copia masiva estén preparados; a continuación, los Agentes de distribución estarán preparados para volver a sincronizar las suscripciones.

Para aquellas suscripciones en las que la instantánea inicial se aplica automáticamente y en las que la publicación admite suscripciones actualizables, el Agente de distribución vuelve a sincronizar la suscripción utilizando el esquema y los archivos del programa de copia masiva más recientes creados previamente por el Agente de instantáneas. El Agente de distribución resincroniza la suscripción inmediatamente después de que el usuario ejecute sp_reinitsubscription, si el Agente de distribución no está ocupado; de lo contrario, la sincronización puede producirse después del intervalo del mensaje (especificado por Agente de distribución parámetro del símbolo del sistema: MessageInterval).

sp_reinitsubscription no tiene ningún efecto en las suscripciones en las que se aplica manualmente la instantánea inicial.

Para resincronizar suscripciones anónimas a una publicación, pase todo o NULL como suscriptor.

La replicación transaccional admite la reinicialización de suscripciones en el nivel del artículo. La instantánea del artículo se volverá a aplicar en el suscriptor durante la siguiente sincronización una vez que se haya marcado el artículo para reinicializarlo. Sin embargo, si hay artículos dependientes a los que también está suscrito el mismo suscriptor, se puede generar un error al volver a aplicar la instantánea en el artículo, a menos que los artículos dependientes de la publicación se reinicialicen también automáticamente en determinadas circunstancias:

  • Si el comando de creación previa del artículo es 'drop', los artículos de vistas y procedimientos almacenados enlazados a un esquema del objeto base de ese artículo también se marcan para reinicializarlos.

  • Si la opción de esquema del artículo incluye scripting de integridad referencial declarada en las claves principales, los artículos que tienen tablas base con relaciones de clave externa con tablas base del artículo reinicializado también se marcan para reinicializarlos.

Ejemplo

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

Permisos

Solo los miembros del rol fijo de servidor sysadmin , los miembros del rol fijo de base de datos db_owner o el creador de la suscripción pueden ejecutar sp_reinitsubscription.

Consulte también

Reinicializar una suscripción
Reinicializar suscripciones
Procedimientos almacenados de replicación (Transact-SQL)