Procédure : supprimer une publication (programmation Transact-SQL de la réplication)

Il est possible de supprimer des publications par programme en utilisant les procédures stockées de réplication. Les procédures stockées à utiliser dépendent du type de publication à supprimer.

Notes

La suppression d'une publication ne supprime pas les objets publiés de la base de données de publication ni les objets correspondants de la base de données d'abonnement. Utilisez la commande DROP <object> pour supprimer manuellement ces objets, si nécessaire.

Pour supprimer une publication de capture instantanée ou une publication transactionnelle

  1. Procédez de l'une des manières suivantes :

    • Pour supprimer une publication unique, exécutez sp_droppublication sur la base de données de publication du serveur de publication.

    • Pour supprimer toutes les publications et tous les objets de réplication d'une base de données publiée, exécutez sp_removedbreplication sur le serveur de publication. Spécifiez la valeur tran pour @type. (Facultatif) Si le serveur de distribution est inaccessible ou si l'état de la base de données est suspect ou hors connexion, spécifiez la valeur 1 pour @force. (Facultatif) Spécifiez le nom de la base de données pour @dbname si sp_removedbreplication n'est pas exécuté sur la base de données de publication.

      Notes

      Spécifier la valeur 1 pour @force peut laisser des objets de publication liés à la réplication dans la base de données.

  2. (Facultatif) Si cette base de données n'a pas d'autres publications, exécutez sp_replicationdboption (Transact-SQL) pour désactiver la publication de la base de données actuelle à l'aide de la réplication transactionnelle ou de capture instantanée.

  3. (Facultatif) Exécutez sp_subscription_cleanup sur la base de données d'abonnement de l'Abonné pour supprimer toutes les métadonnées de réplication restantes dans la base de données d'abonnement.

Pour supprimer une publication de fusion

  1. Procédez de l'une des manières suivantes :

    • Pour supprimer une publication unique, exécutez sp_dropmergepublication (Transact-SQL) sur la base de données de publication du serveur de publication.

    • Pour supprimer toutes les publications et tous les objets de réplication d'une base de données publiée, exécutez sp_removedbreplication sur le serveur de publication. Spécifiez la valeur merge pour @type. (Facultatif) Si le serveur de distribution est inaccessible ou si l'état de la base de données est suspect ou hors connexion, spécifiez la valeur 1 pour @force. (Facultatif) Spécifiez le nom de la base de données pour @dbname si sp_removedbreplication n'est pas exécuté sur la base de données de publication.

      Notes

      Spécifier la valeur 1 pour @force peut laisser des objets de publication liés à la réplication dans la base de données.

  2. (Facultatif) Si cette base de données n'a pas d'autres publications, exécutez sp_replicationdboption (Transact-SQL) pour désactiver la publication de la base de données actuelle à l'aide de la réplication de fusion.

  3. (Facultatif) Exécutez sp_mergesubscription_cleanup (Transact-SQL) sur la base de données d'abonnement de l'Abonné pour supprimer toutes les métadonnées de réplication restantes dans la base de données d'abonnement.

Exemple

Cet exemple montre comment supprimer une publication transactionnelle et désactiver la publication transactionnelle d'une base de données. Cet exemple suppose que tous les abonnements ont été supprimés précédemment. Pour plus d'informations, consultez Procédure : supprimer un abonnement par extraction (programmation Transact-SQL de la réplication) ou Procédure : supprimer un abonnement par émission de données (programmation Transact-SQL de la réplication).

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

Cet exemple montre comment supprimer une publication de fusion et désactiver la publication de fusion d'une base de données. Cet exemple suppose que tous les abonnements ont été supprimés précédemment. Pour plus d'informations, consultez Procédure : supprimer un abonnement par extraction (programmation Transact-SQL de la réplication) ou Procédure : supprimer un abonnement par émission de données (programmation Transact-SQL de la réplication).

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks2008R2'

-- Remove the merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO