Ta bort en push-prenumeration

gäller för:SQL ServerAzure SQL Database

Det här avsnittet beskriver hur du tar bort en push-prenumeration i SQL Server med hjälp av SQL Server Management Studio, Transact-SQL eller Replikeringshanteringsobjekt (RMO).

I det här avsnittet

Använda SQL Server Management Studio

Ta bort en push-prenumeration i Publisher (från mappen Lokala publikationer i SQL Server Management Studio) eller prenumeranten (från mappen Lokala prenumerationer ). Om du tar bort en prenumeration tas inte objekt eller data bort från prenumerationen. de måste tas bort manuellt.

Ta bort en push-prenumeration på Publisher

  1. Anslut till utgivaren i SQL Server Management Studio och expandera sedan servernoden.

  2. Expandera mappen Replikering och expandera sedan mappen Lokala publikationer .

  3. Expandera publikationen som är associerad med den prenumeration som du vill ta bort.

  4. Högerklicka på prenumerationen och klicka sedan på Ta bort.

  5. I bekräftelsedialogrutan väljer du om du vill ansluta till prenumeranten för att ta bort prenumerationsinformation. Om du avmarkerar kryssrutan Anslut till prenumerant bör du ansluta till prenumeranten senare för att ta bort informationen.

Ta bort en push-prenumeration hos prenumeranten

  1. Anslut till prenumeranten i SQL Server Management Studio och expandera sedan servernoden.

  2. Expandera mappen Replikering och expandera sedan mappen Lokala prenumerationer .

  3. Högerklicka på den prenumeration som du vill ta bort och klicka sedan på Ta bort.

  4. I bekräftelsedialogrutan väljer du om du vill ansluta till utgivaren för att ta bort prenumerationsinformation. Om du avmarkerar kryssrutan Anslut till utgivare bör du ansluta till utgivaren senare för att ta bort informationen.

Använda Transact-SQL

Push-prenumerationer kan tas bort programmatiskt med hjälp av lagrade procedurer för replikering. Vilka lagrade procedurer som används beror på vilken typ av publikation som prenumerationen tillhör.

Ta bort en prenumeration av typen push till en snapshot eller transaktionspublikation

  1. Kör sp_dropsubscription (Transact-SQL)i Publisher på publikationsdatabasen. Ange @publication och @subscriber. Ange ett värde för alla för @article. (Valfritt) Om distributören inte kan nås anger du värdet 1 för @ignore_distributor för att ta bort prenumerationen utan att ta bort relaterade objekt hos distributören.

  2. Kör sp_subscription_cleanup (Transact-SQL) i prenumerationsdatabasens Prenumerant för att ta bort replikeringsmetadata i prenumerationsdatabasen.

Ta bort en push-prenumeration till en sammanslagningspublikation

  1. Vid Publisher, kör sp_dropmergesubscription (Transact-SQL) och ange @publication, @subscriber och @subscriber_db. (Valfritt) Om distributören inte kan nås anger du värdet 1 för @ignore_distributor för att ta bort prenumerationen utan att ta bort relaterade objekt hos distributören.

  2. Kör sp_mergesubscription_cleanup (Transact-SQL) på Prenumeranten i Prenumerationsdatabasen. Ange @publisher, @publisher_db och @publication. Detta tar bort sammanslagningsmetadata från prenumerationsdatabasen.

Exempel (Transact-SQL)

I det här exemplet tas en push-prenumeration bort till en transaktionspublikation.

-- 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 [AdventureWorks2022]
EXEC sp_dropsubscription 
  @publication = @publication, 
  @article = N'all',
  @subscriber = @subscriber;
GO

I det här exemplet tas en push-prenumeration bort till en sammanslagningspublikation.

-- 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'AdventureWorks2022Replica';

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

Använda replikeringshanteringsobjekt (RMO)

De RMO-klasser som du använder för att ta bort en push-prenumeration beror på vilken typ av publikation som push-prenumerationen prenumererar på.

Ta bort en push-prenumeration till en ögonblicksbild eller transaktionspublikation

  1. Skapa en anslutning till Publisher med hjälp ServerConnection av klassen .

  2. Skapa en instans av TransSubscription klassen.

  3. Ange PublicationName, SubscriptionDBName, SubscriberName och DatabaseName egenskaperna.

  4. Ställ in ServerConnection från steg 1 för egenskapen ConnectionContext.

  5. Kontrollera egenskapen IsExistingObject för att kontrollera att prenumerationen finns. Om värdet för den här egenskapen är falskt har prenumerationsegenskaperna i steg 2 definierats felaktigt eller så finns inte prenumerationen.

  6. Anropa Remove metoden.

Ta bort en push-prenumeration till en sammanslagningspublikation

  1. Skapa en anslutning till Publisher med hjälp ServerConnection av klassen .

  2. Skapa en instans av MergeSubscription klassen.

  3. Ange PublicationName, SubscriptionDBName, SubscriberName och DatabaseName egenskaperna.

  4. Ställ in ServerConnection från steg 1 på egenskapen ConnectionContext.

  5. Kontrollera egenskapen IsExistingObject för att kontrollera att prenumerationen finns. Om värdet för den här egenskapen är falskt har prenumerationsegenskaperna i steg 2 definierats felaktigt eller så finns inte prenumerationen.

  6. Anropa Remove metoden.

Exempel (RMO)

Du kan ta bort push-prenumerationer programmatiskt med hjälp av Replikeringshanteringsobjekt (RMO).

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

//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 = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"

'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