Procédure : désactiver la publication et la distribution (programmation Transact-SQL de la réplication)

La publication et la distribution peuvent être désactivées par programme à l'aide des procédures stockées de réplication.

Pour désactiver la publication et la distribution

  1. Arrêtez tous les travaux liés à la réplication. Pour obtenir la liste des noms de travaux, consultez la section « Sécurité de l'Agent dans l'Agent SQL Server » de Modèle de sécurité de l'Agent de réplication.

  2. Exécutez sp_removedbreplication sur la base de données d'abonnement de chaque Abonné pour supprimer des objets de réplication de la base de données. Cette procédure stockée ne supprimera pas les travaux de réplication sur le serveur de distribution.

  3. Exécutez sp_removedbreplication sur la base de données de publication du serveur de publication pour supprimer des objets de réplication de la base de données.

  4. Si le serveur de publication utilise un serveur de distribution distant, exécutez sp_dropdistributor.

  5. Sur le serveur de distribution, exécutez sp_dropdistpublisher. Cette procédure stockée doit être exécutée une fois pour chaque serveur de publication inscrit sur le serveur de distribution.

  6. Sur le serveur de distribution, exécutez sp_dropdistributiondb pour supprimer la base de données de distribution. Cette procédure stockée doit être exécutée une fois pour chaque base de données de distribution sur le serveur de distribution. Cela supprime également tous les travaux de l'Agent de lecture de la file d'attente associés à la base de données de distribution.

  7. Sur le serveur de distribution, exécutez sp_dropdistributor pour supprimer la désignation de serveur de distribution du serveur.

    Notes

    Si tous les objets de publication et de distribution de la réplication ne sont pas supprimés avant l'exécution de sp_dropdistpublisher et sp_dropdistributor, ces procédures retourneront une erreur. Pour supprimer tous les objets liés à la réplication lorsqu'un serveur de publication ou un serveur de distribution est supprimé, le paramètre @no_checks doit avoir la valeur 1. Si un serveur de publication ou un serveur de distribution est hors connexion ou inaccessible, la valeur 1 peut être affectée au paramètre @ignore_distributor afin qu'ils puissent être supprimés ; toutefois, tous les objets de publication et de distribution restants doivent être supprimés manuellement.

Exemple

Cet exemple de script supprime des objets de réplication de la base de données d'abonnement.

-- Remove replication objects from the subscription database on MYSUB.
DECLARE @subscriptionDB AS sysname
SET @subscriptionDB = N'AdventureWorks2008R2Replica'

-- Remove replication objects from a subscription database (if necessary).
USE master
EXEC sp_removedbreplication @subscriptionDB
GO

Cet exemple de script désactive la publication et la distribution sur un serveur faisant office de serveur de publication et de serveur de distribution et supprime la base de données de distribution.

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

-- Disable publishing and distribution.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB as sysname;
SET @distributionDB = N'distribution';
SET @publisher = $(DistPubServer);
SET @publicationDB = N'AdventureWorks2008R2';

-- Disable the publication database.
USE [AdventureWorks2008R2]
EXEC sp_removedbreplication @publicationDB;

-- Remove the registration of the local Publisher at the Distributor.
USE master
EXEC sp_dropdistpublisher @publisher;

-- Delete the distribution database.
EXEC sp_dropdistributiondb @distributionDB;

-- Remove the local server as a Distributor.
EXEC sp_dropdistributor;
GO