Partilhar via


Eliminar uma Assinatura Push

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Este tópico descreve como eliminar uma subscrição push no SQL Server utilizando SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO).

Neste tópico

Usando o SQL Server Management Studio

Elimine uma subscrição push no Publisher (da pasta Local Publications no SQL Server Management Studio) ou no Subscriber (da pasta Local Subscriptions ). Eliminar uma subscrição não remove objetos ou dados da subscrição; Devem ser removidos manualmente.

Para eliminar uma subscrição push no Publisher

  1. Ligue-se ao Publisher no SQL Server Management Studio e depois expanda o nó do servidor.

  2. Expanda a pasta Replicação e depois expanda a pasta Publicações Locais .

  3. Expanda a publicação associada à subscrição que pretende eliminar.

  4. Clique com o botão direito na subscrição e depois clique em Eliminar.

  5. Na caixa de diálogo de confirmação, selecione se se deve ligar ao Assinante para eliminar a informação da subscrição. Se desmarcar a opção Ligar ao Assinante, deve conectar-se ao Assinante mais tarde para apagar a informação.

Para eliminar uma subscrição push no Assinante

  1. Liga-te ao Assinante no SQL Server Management Studio e, em seguida, expande o nó do servidor.

  2. Expanda a pasta Replicação e depois expanda a pasta Subscrições Locais .

  3. Clique com o botão direito na subscrição que quer eliminar e depois clique em Apagar.

  4. Na caixa de diálogo de confirmação, selecione se se deve ligar ao Publisher para eliminar informações de subscrição. Se desmarcar a caixa de seleção Ligar ao Editor, deverá ligar-se ao Editor mais tarde para apagar a informação.

Usando Transact-SQL

As subscrições push podem ser eliminadas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados utilizados dependem do tipo de publicação a que a subscrição pertence.

Para eliminar uma subscrição push de um snapshot ou de uma publicação transacional

  1. No Editor na base de dados de publicações, execute sp_dropsubscription (Transact-SQL). Especifique @publicação e @assinante. Especifique um valor de todos para @article. (Opcional) Se o Distribuidor não puder ser acedido, especifique um valor de 1 para @ignore_distributor para eliminar a subscrição sem remover objetos relacionados no Distribuidor.

  2. No Subscriber na base de dados de subscrição, execute sp_subscription_cleanup (Transact-SQL) para remover os metadados de replicação na base de dados de subscrição.

Para eliminar uma subscrição push a uma publicação de fusão

  1. No Publisher, execute sp_dropmergesubscription (Transact-SQL), especificando @publication, @subscriber e @subscriber_db. (Opcional) Se o Distribuidor não puder ser acedido, especifique um valor de 1 para @ignore_distributor para eliminar a subscrição sem remover objetos relacionados no Distribuidor.

  2. No Subscritor na base de dados de subscrição, execute sp_mergesubscription_cleanup (Transact-SQL). Especifique @publisher, @publisher_db e @publication. Isto remove os metadados de fusão da base de dados de subscrição.

Exemplos (Transact-SQL)

Este exemplo elimina uma subscrição push de uma publicação transacional.

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

Este exemplo elimina uma subscrição push a uma publicação de fusão.

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

Utilização de Objetos de Gestão de Replicação (RMO)

As classes RMO que usa para eliminar uma subscrição push dependem do tipo de publicação a que a subscrição push está subscrita.

Para eliminar uma subscrição push de um snapshot ou publicação transacional

  1. Crie uma ligação ao Editor usando a ServerConnection classe.

  2. Cria uma instância da TransSubscription classe.

  3. Defina as propriedades PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.

  4. Defina o ServerConnection conforme o passo 1 para a propriedade ConnectionContext.

  5. Verifique a IsExistingObject propriedade para verificar se a subscrição existe. Se o valor desta propriedade for falso, ou as propriedades de subscrição no passo 2 foram definidas incorretamente ou a subscrição não existe.

  6. Chame o método Remove.

Para eliminar uma subscrição push numa publicação de fusão

  1. Crie uma ligação ao Editor usando a ServerConnection classe.

  2. Cria uma instância da MergeSubscription classe.

  3. Defina as propriedades PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.

  4. Defina o ServerConnection a partir do passo 1 para a ConnectionContext propriedade.

  5. Verifique a IsExistingObject propriedade para verificar se a subscrição existe. Se o valor desta propriedade for falso, ou as propriedades de subscrição no passo 2 foram definidas incorretamente ou a subscrição não existe.

  6. Chame o método Remove.

Exemplos (RMO)

Pode eliminar subscrições push programaticamente usando os Objectos de Gestão de Replicação (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