sp_reinitsubscription (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Marque l'abonnement pour la réinitialisation. Cette procédure stockée est exécutée sur le serveur de publication pour les abonnements par envoi de données (push).

Conventions de la syntaxe Transact-SQL

Syntaxe

  
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 ]  

Arguments

[ @publication = ] 'publication' Nom de la composition. la publication est sysname, avec une valeur par défaut de tous.

[ @article = ] 'article' Nom de l’article. l’article est sysname, avec une valeur par défaut de tous. Pour une publication à mise à jour immédiate, l’article doit être tout ; sinon, la procédure stockée ignore la publication et signale une erreur.

[ @subscriber = ] 'subscriber' Nom de l’Abonné. l’abonné est sysname, sans valeur par défaut.

[ @destination_db = ] 'destination_db' Nom de la base de données de destination. destination_db est sysname, avec une valeur par défaut de tous.

[ @for_schema_change = ] 'for_schema_change' Indique si la réinitialisation se produit à la suite d’une modification de schéma dans la base de données de publication. for_schema_change est bit, avec une valeur par défaut de 0. Si 0, les abonnements actifs pour les publications qui autorisent la mise à jour immédiate sont réactivés tant que l’ensemble de la composition, et pas seulement certains de ses articles, sont réinitialisés. Ceci implique que la réinitialisation est effectuée à la suite de modifications du schéma. Si 1, les abonnements actifs ne sont pas réactivés tant que l’Agent d’instantané n’est pas exécuté.

[ @publisher = ] 'publisher' Spécifie un serveur de publication non-SQL Server. publisher est sysname, avec une valeur par défaut null.

Remarque

Publisher ne doit pas être utilisé pour les serveurs de publication SQL Server.

[ @ignore_distributor_failure = ] ignore_distributor_failure Autorise la réinitialisation même si le serveur de distribution n’existe pas ou est hors connexion. ignore_distributor_failure est bit, avec une valeur par défaut de 0. Si 0, la réinitialisation échoue si le serveur de distribution n’existe pas ou est hors connexion.

[ @invalidate_snapshot = ] invalidate_snapshotInvalide la publication existante instantané. invalidate_instantané est bit, avec une valeur par défaut de 0. Si 1, une nouvelle instantané est générée pour la publication.

Codet de retour

0 (réussite) ou 1 (échec)

Notes

sp_reinitsubscription est utilisé dans la réplication transactionnelle.

sp_reinitsubscription n’est pas pris en charge pour la réplication transactionnelle d’égal à égal.

Pour les abonnements dans lesquels l'instantané initial est appliqué automatiquement et où la publication n'autorise pas les abonnements pouvant être mis à jour, l'Agent d'instantané doit être exécuté après l'exécution de cette procédure stockée pour que les fichiers du schéma et du programme de copie en bloc soient préparés et que les Agents de distribution puissent ensuite resynchroniser les abonnements.

Lorsque l'instantané initial est appliqué automatiquement et que la publication autorise les abonnements pouvant être mis à jour, l'Agent de distribution resynchronise l'abonnement à partir des fichiers de schéma et de programme de copie en bloc les plus récents préalablement créés par l'Agent d'instantané. La Agent de distribution resynchronise l’abonnement immédiatement après l’exécution de l’utilisateur sp_reinitsubscription, si le Agent de distribution n’est pas occupé ; sinon, la synchronisation peut se produire après l’intervalle de message (spécifié par Agent de distribution paramètre d’invite de commandes : MessageInterval).

sp_reinitsubscription n’a aucun effet sur les abonnements où la instantané initiale est appliquée manuellement.

Pour resynchroniser les abonnements anonymes à une publication, transmettez tout ou NULL en tant qu’abonné.

La réplication transactionnelle prend en charge la réinitialisation d'abonnements au niveau de l'article. L'instantané de l'article est réappliqué sur l'Abonné au cours de la synchronisation suivante après que l'article a été marqué pour la réinitialisation. Toutefois, si le même Abonné a également souscrit à des articles dépendants, la réapplication de l'instantané sur l'article peut échouer sauf si les articles dépendants de la publication sont également automatiquement réinitialisés sous certaines conditions :

  • Si la commande de pré-création de l'article est 'drop', les articles des vues liées au schéma et les procédures stockées liées au schéma sur l'objet de base de cet article sont également marqués pour la réinitialisation.

  • Si l'option de schéma sur l'article inclut le script d'intégrité référentielle déclarée sur les clés primaires, les articles qui ont des tables de base avec des relations de clés étrangères à des tables de base de l'article réinitialisé sont également marqués pour la réinitialisation.

Exemple

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

Autorisations

Seuls les membres du rôle serveur fixe sysadmin , les membres du rôle de base de données fixe db_owner ou le créateur de l’abonnement peuvent exécuter sp_reinitsubscription.

Voir aussi

Réinitialiser un abonnement
Réinitialiser des abonnements
Procédures stockées de réplication (Transact-SQL)