Freigeben über


Löschen eines Pushabonnements

In diesem Thema wird beschrieben, wie ein Pushabonnement in SQL Server 2012 mit SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) gelöscht wird.

In diesem Thema

  • So löschen Sie ein Pushabonnement mit:

    SQL Server Management Studio

    Transact-SQL

    Replikationsverwaltungsobjekte (RMO)

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. Durch das Löschen eines Abonnements werden die zugehörigen Objekte oder Daten nicht aus dem Abonnement entfernt; sie müssen manuell entfernt werden.

So löschen Sie ein Pushabonnement beim Verleger

  1. Stellen Sie in SQL Server Management Studio eine 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 Studio eine 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.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Verwendung 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 all an. (Optional) Wenn nicht auf den Verteiler zugegriffen werden kann, geben Sie den Wert 1 für @ignore_distributor an, um das Abonnement ohne die damit verbundenen Objekte auf dem Verteiler zu löschen.

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

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

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

  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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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, SubscriberName und 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, SubscriberName und 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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Siehe auch

Konzepte

Abonnieren von Veröffentlichungen

Bewährte Methoden für die Replikationssicherheit