Löschen eines PushabonnementsDelete a Push Subscription

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie ein Pushabonnement in SQL ServerSQL Server mit SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLoder Replikationsverwaltungsobjekten (RMO) gelöscht wird.This topic describes how to delete a push subscription in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

In diesem ThemaIn This Topic

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

Ein Pushabonnement wird beim Verleger (im Ordner Lokale Veröffentlichungen in SQL Server Management StudioSQL Server Management Studio) oder beim Abonnenten (im Ordner Lokale Abonnements ) gelöscht.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). Beim Löschen eines Abonnements werden keine Objekte oder Daten aus dem Abonnement entfernt, diese müssen manuell entfernt werden.Deleting a subscription does not remove objects or data from the subscription; they must be removed manually.

So löschen Sie ein Pushabonnement beim VerlegerTo delete a push subscription at the Publisher

  1. Stellen Sie in SQL Server Management StudioSQL Server Management Studioeine Verbindung mit dem Verleger her, und erweitern Sie dann den Serverknoten.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .Expand the Replication folder, and then expand the Local Publications folder.

  3. Erweitern Sie die Veröffentlichung, der das zu löschende Abonnement zugeordnet ist.Expand the publication associated with the subscription you want to delete.

  4. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Löschen.Right-click the subscription, and then click Delete.

  5. Wählen Sie im Bestätigungsdialogfeld aus, ob zum Löschen der Abonnementinformationen eine Verbindung mit dem Abonnenten hergestellt werden soll.In the confirmation dialog box, select whether to connect to the Subscriber to delete subscription information. Wenn Sie das Kontrollkästchen Verbindung mit Abonnenten herstellen deaktivieren, sollten Sie später eine Verbindung mit dem Abonnenten herstellen, um die Informationen zu löschen.If you clear the Connect to Subscriber checkbox, you should connect to the Subscriber later to delete the information.

So löschen Sie ein Pushabonnement auf dem AbonnentenTo delete a push subscription at the Subscriber

  1. Stellen Sie in SQL Server Management StudioSQL Server Management Studioeine Verbindung mit dem Abonnenten her, und erweitern Sie dann den Serverknoten.Connect to the Subscriber in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Abonnements .Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. Klicken Sie mit der rechten Maustaste auf das Abonnement, das Sie löschen möchten, und klicken Sie dann auf Löschen.Right-click the subscription you want to delete, and then click Delete.

  4. Wählen Sie im Bestätigungsdialogfeld aus, ob zum Löschen der Abonnementinformationen eine Verbindung mit dem Verleger hergestellt werden soll.In the confirmation dialog box, select whether to connect to the Publisher to delete subscription information. Wenn Sie das Kontrollkästchen Verbindung mit Verleger herstellen deaktivieren, müssen Sie zum Löschen der Informationen später eine Verbindung mit dem Verleger herstellen.If you clear the Connect to Publisher check box, you should connect to the Publisher later to delete the information.

Verwenden von Transact-SQLUsing Transact-SQL

Pushabonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert gelöscht werden.Push subscriptions can be deleted programmatically using replication stored procedures. Welche gespeicherten Prozeduren verwendet werden, hängt vom Typ der Veröffentlichung ab, zu der das Abonnement gehört.The stored procedures used depend on the type of publication to which the subscription belongs.

So löschen Sie ein Pushabonnement für eine Momentaufnahme- oder TransaktionsveröffentlichungTo delete a push subscription to a snapshot or transactional publication

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_dropsubscription (Transact-SQL) aus.At the Publisher on the publication database, execute sp_dropsubscription (Transact-SQL). Geben Sie @publication und @subscriber an.Specify @publication and @subscriber. Geben Sie für @article den Wert all an.Specify a value of all for @article. (Optional) Wenn auf den Verteiler nicht zugegriffen werden kann, geben Sie für @ignore_distributor den Wert 1 an, um das Abonnement ohne die damit verbundenen Objekte auf dem Verteiler zu löschen.(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. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_subscription_cleanup (Transact-SQL) aus, um Replikationsmetadaten aus der Abonnementdatenbank zu entfernen.At the Subscriber on the subscription database, execute sp_subscription_cleanup (Transact-SQL) to remove replication metadata in the subscription database.

So löschen Sie ein Pushabonnement für eine MergeveröffentlichungTo delete a push subscription to a merge publication

  1. Führen Sie auf dem Verleger sp_dropmergesubscription (Transact-SQL) aus, und geben Sie dabei @publication, @subscriber und @subscriber_db an.At the Publisher, execute sp_dropmergesubscription (Transact-SQL), specifying @publication, @subscriber and @subscriber_db. (Optional) Wenn auf den Verteiler nicht zugegriffen werden kann, geben Sie für @ignore_distributor den Wert 1 an, um das Abonnement ohne die damit verbundenen Objekte auf dem Verteiler zu löschen.(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. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_mergesubscription_cleanup (Transact-SQL) aus.At the Subscriber on the subscription database, execute sp_mergesubscription_cleanup (Transact-SQL). Geben Sie @publisher, @publisher_db und @publication an.Specify @publisher, @publisher_db, and @publication. Damit werden Mergemetadaten aus der Abonnementdatenbank gelöscht.This removes merge metadata from the subscription database.

Beispiele (Transact-SQL)Examples (Transact-SQL)

Im folgenden Beispiel wird ein neues Pushabonnement für eine Transaktionsveröffentlichung gelöscht.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

Im folgenden Beispiel wird ein neues Pushabonnement für eine Mergeveröffentlichung gelöscht.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

Verwenden von Replikationsverwaltungsobjekten (RMO)Using Replication Management Objects (RMO)

Die RMO-Klassen, mit denen Sie ein Pushabonnement löschen, hängen vom Typ der Veröffentlichung ab, für die das Pushabonnement abonniert wird.The RMO classes that you use to delete a push subscription depend on the type of publication to which the push subscription is subscribed.

So löschen Sie ein Pushabonnement für eine Momentaufnahme- oder TransaktionsveröffentlichungTo delete a push subscription to a snapshot or transactional publication

  1. Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Subscriber by using the ServerConnection class.

  2. Erstellen Sie eine Instanz der TransSubscription -Klasse.Create an instance of the TransSubscription class.

  3. Legen Sie die Eigenschaften PublicationName, SubscriptionDBName, SubscriberNameund DatabaseName fest.Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Legen Sie ServerConnection aus Schritt 1 für die ConnectionContext -Eigenschaft fest.Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob das Abonnement vorhanden ist.Check the IsExistingObject property to verify that the subscription exists. Wenn der Wert dieser Eigenschaft falseist, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Abonnement ist nicht vorhanden.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. Rufen Sie die Remove -Methode auf.Call the Remove method.

So löschen Sie ein Pushabonnement für eine MergeveröffentlichungTo delete a push subscription to a merge publication

  1. Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Subscriber by using the ServerConnection class.

  2. Erstellen Sie eine Instanz der MergeSubscription -Klasse.Create an instance of the MergeSubscription class.

  3. Legen Sie die Eigenschaften PublicationName, SubscriptionDBName, SubscriberNameund DatabaseName fest.Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Legen Sie ServerConnection aus Schritt 1 für die ConnectionContext -Eigenschaft fest.Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob das Abonnement vorhanden ist.Check the IsExistingObject property to verify that the subscription exists. Wenn der Wert dieser Eigenschaft falseist, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Abonnement ist nicht vorhanden.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. Rufen Sie die Remove -Methode auf.Call the Remove method.

Beispiele (RMO)Examples (RMO)

Sie können Pushabonnements mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert löschen.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

Weitere InformationenSee Also

Abonnieren von Veröffentlichungen Subscribe to Publications
Bewährte Methoden für die ReplikationssicherheitReplication Security Best Practices