Procédure : supprimer un abonnement par émission de données (programmation Transact-SQL de la réplication)

Les abonnements par émission de données peuvent être supprimés par programme en utilisant des procédures stockées de réplication. Les procédures stockées utilisées dépendent du type de publication auquel l'abonnement appartient.

Pour supprimer un abonnement par émission de données à une publication transactionnelle ou de capture instantanée

  1. Dans la base de données de publication sur le serveur de publication, exécutez sp_dropsubscription (Transact-SQL). Spécifiez @publication et @subscriber. Affectez la valeur all à @article. (Facultatif) Si le serveur de distribution n'est pas accessible, affectez la valeur 1 à @ignore_distributor pour supprimer l'abonnement sans supprimer les objets connexes au niveau du serveur de distribution.

  2. Dans la base de données d'abonnement de l'Abonné, exécutez sp_subscription_cleanup (Transact-SQL) pour supprimer les métadonnées de réplication restantes dans la base de données d'abonnement.

Pour supprimer un abonnement par émission de données à une publication de fusion

  1. Sur le serveur de publication, exécutez sp_dropmergesubscription (Transact-SQL) en spécifiant @publication, @subscriber et @subscriber_db. (Facultatif) Si le serveur de distribution n'est pas accessible, affectez la valeur 1 à @ignore_distributor pour supprimer l'abonnement sans supprimer les objets connexes au niveau du serveur de distribution.

  2. Dans la base de données d'abonnement de l'Abonné, exécutez sp_mergesubscription_cleanup (Transact-SQL). Spécifiez @publisher, @publisherdb et @publisher_. Les métadonnées de fusion sont alors supprimées de la base de données d'abonnement.

Exemple

Cet exemple supprime un abonnement par émission de données à une publication transactionnelle.

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

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a transactional publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);

USE [AdventureWorks2008R2;]
EXEC sp_dropsubscription 
  @publication = @publication, 
  @article = N'all',
  @subscriber = @subscriber;
GO

Cet exemple supprime un abonnement par émission de données à une publication de fusion.

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

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a merge publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

USE [AdventureWorks2008R2]
EXEC sp_dropmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB;
GO