Share via


Löschen eines Pushabonnements

In diesem Thema wird beschrieben, wie Sie ein Pushabonnement in SQL Server 2014 mithilfe von SQL Server Management Studio, Transact-SQL oder Replication Management Objects (RMO) löschen.

In diesem Thema

Verwendung von SQL Server Management Studio

Ein Pushabonnement wird beim Verleger (im Ordner Lokale Veröffentlichungen in SQL Server Management Studio) oder beim Abonnenten (im Ordner Lokale Abonnements ) gelöscht. Beim Löschen eines Abonnements werden keine Objekte oder Daten aus dem Abonnement entfernt, diese müssen manuell entfernt werden.

So löschen Sie ein Pushabonnement beim Verleger

  1. Stellen Sie in SQL Server Management Studioeine Verbindung mit dem Verleger her, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  3. Erweitern Sie die Veröffentlichung, der das zu löschende Abonnement zugeordnet ist.

  4. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Löschen.

  5. Wählen Sie im Bestätigungsdialogfeld aus, ob zum Löschen der Abonnementinformationen eine Verbindung mit dem Abonnenten hergestellt werden soll. 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.

So löschen Sie ein Pushabonnement auf dem Abonnenten

  1. Stellen Sie in SQL Server Management Studioeine Verbindung mit dem Abonnenten her, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Abonnements .

  3. Klicken Sie mit der rechten Maustaste auf das Abonnement, das Sie löschen möchten, und klicken Sie dann auf Löschen.

  4. Wählen Sie im Bestätigungsdialogfeld aus, ob zum Löschen der Abonnementinformationen eine Verbindung mit dem Verleger hergestellt werden soll. 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.

Verwenden von Transact-SQL

Pushabonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert gelöscht werden. Welche gespeicherten Prozeduren verwendet werden, hängt vom Typ der Veröffentlichung ab, zu der das Abonnement gehört.

So löschen Sie ein Pushabonnement für eine Momentaufnahme- oder Transaktionsveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_dropsubscription (Transact-SQL) aus. Geben Sie @publication und @subscriber an. Geben Sie für @article den Wert allan. (Optional) Wenn auf den Verteiler nicht zugegriffen werden kann, geben Sie den Wert 1 für @ignore_distributor an, um das Abonnement zu löschen, ohne zugehörige Objekte auf dem Verteiler zu entfernen.

  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_subscription_cleanup (Transact-SQL) aus, um Replikationsmetadaten in der Abonnementdatenbank zu entfernen.

So löschen Sie ein Pushabonnement für eine Mergeveröffentlichung

  1. Führen Sie auf dem Verleger sp_dropmergesubscription (Transact-SQL) aus, und geben Sie @publication, @subscriber und @subscriber_db an. (Optional) Wenn auf den Verteiler nicht zugegriffen werden kann, geben Sie den Wert 1 für @ignore_distributor an, um das Abonnement zu löschen, ohne zugehörige Objekte auf dem Verteiler zu entfernen.

  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_mergesubscription_cleanup (Transact-SQL) aus. Geben Sie @publisher, @publisher_db und @publication an. Damit werden Mergemetadaten aus der Abonnementdatenbank gelöscht.

Beispiele (Transact-SQL)

Im folgenden Beispiel wird ein neues Pushabonnement für eine Transaktionsveröffentlichung gelöscht.

-- 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 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)

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.

So löschen Sie ein Pushabonnement für eine Momentaufnahme- oder Transaktionsveröffentlichung

  1. Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der TransSubscription-Klasse.

  3. Legen Sie die Eigenschaften PublicationName, SubscriptionDBName, SubscriberNameund DatabaseName fest.

  4. Legen Sie ServerConnection aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob das Abonnement vorhanden ist. Wenn der Wert dieser Eigenschaft false ist, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Abonnement ist nicht vorhanden.

  6. Rufen Sie die Remove -Methode auf.

So löschen Sie ein Pushabonnement für eine Mergeveröffentlichung

  1. Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergeSubscription-Klasse.

  3. Legen Sie die Eigenschaften PublicationName, SubscriptionDBName, SubscriberNameund DatabaseName fest.

  4. Legen Sie ServerConnection aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Überprüfen Sie die IsExistingObject -Eigenschaft, um festzustellen, ob das Abonnement vorhanden ist. Wenn der Wert dieser Eigenschaft false ist, wurden entweder die Abonnementeigenschaften in Schritt 2 falsch definiert, oder das Abonnement ist nicht vorhanden.

  6. Rufen Sie die Remove-Methode auf.

Beispiele (RMO)

Sie können Pushabonnements mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert löschen.

// 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 Informationen

Abonnieren von Veröffentlichungen
Bewährte Methoden für die Replikationssicherheit