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

Les abonnements par extraction 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 extraction à une publication transactionnelle ou de capture instantanée

  1. Dans la base de données d'abonnement de l'Abonné, exécutez sp_droppullsubscription (Transact-SQL). Spécifiez @publication, @publisher et @publisher_db.

  2. Dans la base de données de publication du 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.

Pour supprimer un abonnement par extraction à une publication de fusion

  1. Dans la base de données d'abonnement de l'Abonné, exécutez sp_dropmergepullsubscription (Transact-SQL). Spécifiez @publication, @publisher et @publisher_db.

  2. Dans la base de données de publication sur le serveur de publication, exécutez sp_dropmergesubscription (Transact-SQL). Spécifiez @publication, @subscriber et @subscriber_db. Affectez la valeur pull à @subscription_type. (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.

Exemple

L'exemple suivant supprime un abonnement par extraction à une publication transactionnelle. Le premier lot est exécuté sur l'Abonné, le second sur le serveur de publication.

-- 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 is the batch executed at the Subscriber to drop 
-- a pull subscription to a transactional publication.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB     AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';

USE [AdventureWorks2008R2Replica]
EXEC sp_droppullsubscription 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication;
GO
-- 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

L'exemple suivant supprime un abonnement par extraction à une publication de fusion. Le premier lot est exécuté sur l'Abonné, le second sur le serveur de publication.

-- 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 Subscriber to remove 
-- a merge pull subscription.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publication_db AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publication_db = N'AdventureWorks2008R2';

USE [AdventureWorks2008R2Replica]
EXEC sp_dropmergepullsubscription 
  @publisher = @publisher, 
  @publisher_db = @publication_db, 
  @publication = @publication;
GO
-- 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