Supprimer un abonnement par émission (push)Delete a Push Subscription

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Cette rubrique explique comment supprimer un abonnement par émission de données (push) dans SQL Server 2017SQL Server 2017 à l'aide de SQL Server Management StudioSQL Server Management Studio, de Transact-SQLTransact-SQLou d'objets RMO (Replication Management Objects).This topic describes how to delete a push subscription in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

Dans cette rubriqueIn This Topic

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

Supprimez un abonnement par émission de données (push) sur le serveur de publication (à partir du dossier Publications locales dans SQL Server Management StudioSQL Server Management Studio) ou sur l'Abonné (à partir du dossier Publications locales ).Delete a push subscription at the Publisher (from the Local Publications folder in SQL Server Management StudioSQL Server Management Studio) or the Subscriber (from the Local Subscriptions folder). La suppression d'un abonnement ne supprime pas les objets ou les données de ce dernier : ils doivent être supprimés manuellement.Deleting a subscription does not remove objects or data from the subscription; they must be removed manually.

Pour supprimer un abonnement par envoi de données au niveau du serveur de publicationTo delete a push subscription at the Publisher

  1. Connectez-vous au serveur de publication dans SQL Server Management StudioSQL Server Management Studio, puis développez le nœud du serveur.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .Expand the Replication folder, and then expand the Local Publications folder.

  3. Développez la publication associée à l'abonnement à supprimer.Expand the publication associated with the subscription you want to delete.

  4. Cliquez avec le bouton droit sur l'abonnement puis cliquez sur Supprimer.Right-click the subscription, and then click Delete.

  5. Dans la boîte de dialogue de confirmation, indiquez si vous souhaitez vous connecter à l'Abonné pour supprimer les informations d'abonnement.In the confirmation dialog box, select whether to connect to the Subscriber to delete subscription information. Si vous désactivez la case à cocher Se connecter à l'Abonné , vous devrez vous connecter plus tard à l'Abonné pour supprimer les informations.If you clear the Connect to Subscriber checkbox, you should connect to the Subscriber later to delete the information.

Nous sommes à votre écoute : Si vous trouvez des informations obsolètes ou incorrectes dans cet article, par exemple une étape ou une erreur dans un code, n’hésitez pas à nous en faire part.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Vous pouvez cliquer sur le bouton Cette page dans la section Commentaires au bas de cette page.You can click the This page button in the Feedback section at the bottom of this page. Nous lisons chaque commentaire concernant SQL, généralement le jour suivant.We read every item of feedback about SQL, typically the next day. Nous vous remercions.Thanks.

Pour supprimer un abonnement par envoi de données au niveau de l'AbonnéTo delete a push subscription at the Subscriber

  1. Connectez-vous à l'Abonné dans SQL Server Management StudioSQL Server Management Studio, puis développez le nœud du serveur.Connect to the Subscriber in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Développez le dossier Réplication , puis développez le dossier Abonnements locaux .Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. Cliquez avec le bouton droit sur l'abonnement à supprimer, puis cliquez sur Supprimer.Right-click the subscription you want to delete, and then click Delete.

  4. Dans la boîte de dialogue de confirmation, indiquez si vous souhaitez vous connecter au serveur de publication pour supprimer les informations d'abonnement.In the confirmation dialog box, select whether to connect to the Publisher to delete subscription information. Si vous désactivez la case à cocher Se connecter au serveur de publication , vous devez vous connecter ultérieurement au serveur de publication pour supprimer les informations.If you clear the Connect to Publisher check box, you should connect to the Publisher later to delete the information.

Utilisation de Transact-SQLUsing Transact-SQL

Les abonnements par émission de données peuvent être supprimés par programme en utilisant des procédures stockées de réplication.Push subscriptions can be deleted programmatically using replication stored procedures. Les procédures stockées utilisées dépendent du type de publication auquel l'abonnement appartient.The stored procedures used depend on the type of publication to which the subscription belongs.

Pour supprimer un abonnement par émission de données à une publication transactionnelle ou d'instantanéTo delete a push subscription to a snapshot or transactional publication

  1. Dans la base de données de publication du serveur de publication, exécutez sp_dropsubscription (Transact-SQL).At the Publisher on the publication database, execute sp_dropsubscription (Transact-SQL). Spécifiez @publication et @subscriber.Specify @publication and @subscriber. Affectez la valeur all à @article.Specify a value of all for @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.(Optional) If the Distributor cannot be accessed, specify a value of 1 for @ignore_distributor to delete the subscription without removing related objects at the Distributor.

  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 dans la base de données d’abonnement.At the Subscriber on the subscription database, execute sp_subscription_cleanup (Transact-SQL) to remove replication metadata in the subscription database.

Pour supprimer un abonnement par émission de données à une publication de fusionTo delete a push subscription to a merge publication

  1. Sur le serveur de publication, exécutez sp_dropmergesubscription (Transact-SQL), en spécifiant @publication, @subscriber et @subscriber_db.At the Publisher, execute sp_dropmergesubscription (Transact-SQL), specifying @publication, @subscriber and @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.(Optional) If the Distributor cannot be accessed, specify a value of 1 for @ignore_distributor to delete the subscription without removing related objects at the Distributor.

  2. Dans la base de données d’abonnement de l’Abonné, exécutez sp_mergesubscription_cleanup (Transact-SQL).At the Subscriber on the subscription database, execute sp_mergesubscription_cleanup (Transact-SQL). Spécifiez @publisher, @publisher_db et @publication.Specify @publisher, @publisher_db, and @publication. Les métadonnées de fusion sont alors supprimées de la base de données d'abonnement.This removes merge metadata from the subscription database.

Exemples (Transact-SQL)Examples (Transact-SQL)

Cet exemple supprime un abonnement par émission de données à une publication transactionnelle.This example deletes a push subscription to a transactional 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 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 [AdventureWorks2012]
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 example deletes a push subscription to a merge 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 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'AdventureWorks2012Replica';

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

Utilisation d'objets RMO (Replication Management Objects)Using Replication Management Objects (RMO)

Les classes RMO à utiliser pour supprimer un abonnement par émission de données dépendent du type de publication auquel l'abonnement par émission de données est souscrit.The RMO classes that you use to delete a push subscription depend on the type of publication to which the push subscription is subscribed.

Pour supprimer un abonnement par émission de données à une publication transactionnelle ou d'instantanéTo delete a push subscription to a snapshot or transactional publication

  1. Créez une connexion à l'Abonné en utilisant la classe ServerConnection .Create a connection to the Subscriber by using the ServerConnection class.

  2. Créez une instance de la classe TransSubscription .Create an instance of the TransSubscription class.

  3. Définissez les propriétés PublicationName, SubscriptionDBName, SubscriberNameet DatabaseName .Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Définissez la classe ServerConnection créée à l'étape 1 pour la propriété ConnectionContext .Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Vérifiez la propriété IsExistingObject pour vous assurer que l'abonnement existe.Check the IsExistingObject property to verify that the subscription exists. Si la valeur de cette propriété est false, les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 2, ou l'article n'existe pas.If the value of this property is false, either the subscription properties in step 2 were defined incorrectly or the subscription does not exist.

  6. Appelez la méthode Remove .Call the Remove method.

Pour supprimer un abonnement par émission de données à une publication de fusionTo delete a push subscription to a merge publication

  1. Créez une connexion à l'Abonné en utilisant la classe ServerConnection .Create a connection to the Subscriber by using the ServerConnection class.

  2. Créez une instance de la classe MergeSubscription .Create an instance of the MergeSubscription class.

  3. Définissez les propriétés PublicationName, SubscriptionDBName, SubscriberNameet DatabaseName .Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Définissez la classe ServerConnection créée à l'étape 1 pour la propriété ConnectionContext .Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Vérifiez la propriété IsExistingObject pour vous assurer que l'abonnement existe.Check the IsExistingObject property to verify that the subscription exists. Si la valeur de cette propriété est false, les propriétés de l'abonnement ont été définies de manière incorrecte à l'étape 2, ou l'article n'existe pas.If the value of this property is false, either the subscription properties in step 2 were defined incorrectly or the subscription does not exist.

  6. Appelez la méthode Remove .Call the Remove method.

Exemples (RMO)Examples (RMO)

Vous pouvez supprimer par programme des abonnements par émission de données à l'aide d'objets RMO (Replication Management Objects).You can delete push subscriptions programmatically by using Replication Management Objects (RMO).

// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";

//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

// Create the objects that we need.
TransSubscription subscription;

try
{
    // Connect to the Subscriber.
    conn.Connect();

    // Define the pull subscription.
    subscription = new TransSubscription();
    subscription.ConnectionContext = conn;
    subscription.SubscriberName = subscriberName;
    subscription.PublicationName = publicationName;
    subscription.SubscriptionDBName = subscriptionDbName;
    subscription.DatabaseName = publicationDbName;

    // Delete the pull subscription, if it exists.
    if (subscription.IsExistingObject)
    {
        // Delete the pull subscription at the Subscriber.
        subscription.Remove();
    }
    else
    {
        throw new ApplicationException(String.Format(
            "The subscription to {0} does not exist on {1}",
            publicationName, subscriberName));
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here.
    throw new ApplicationException(String.Format(
        "The subscription to {0} could not be deleted.", publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksProductTran"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

' Create the objects that we need.
Dim subscription As TransSubscription

Try
    ' Connect to the Subscriber.
    conn.Connect()

    ' Define the pull subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.SubscriberName = subscriberName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.DatabaseName = publicationDbName

    ' Delete the pull subscription, if it exists.
    If subscription.IsExistingObject Then

        ' Delete the pull subscription at the Subscriber.
        subscription.Remove()
    Else
        Throw New ApplicationException(String.Format( _
         "The subscription to {0} does not exist on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here.
    Throw New ApplicationException(String.Format( _
        "The subscription to {0} could not be deleted.", publicationName), ex)
Finally
    conn.Disconnect()
End Try

Voir aussiSee Also

S’abonner à des publications Subscribe to Publications
Bonnes pratiques en matière de sécurité de la réplicationReplication Security Best Practices