Partilhar via


Excluir uma assinatura push

Este tópico descreve como excluir uma assinatura push no SQL Server 2014 usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects).

Nesse Tópico

Como usar o SQL Server Management Studio.

Exclua uma assinatura push no Publicador (da pasta Publicações Locais no SQL Server Management Studio) ou no Assinante (da pasta Assinaturas Locais ). Excluir uma assinatura não remove objetos ou dados da assinatura; eles devem ser removidos manualmente.

Para excluir uma assinatura push no Publicador

  1. Conecte-se ao Publicador no SQL Server Management Studio e expanda o nó do servidor.

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

  3. Expanda a publicação associada à assinatura que você deseja excluir.

  4. Clique com o botão direito do mouse na assinatura e clique em Excluir.

  5. Na caixa de diálogo de confirmação, selecione se deseja se conectar ao Assinante para excluir informações da assinatura. Se você desmarcar a caixa de seleção Conectar ao Assinante, deverá se conectar ao Assinante mais tarde para excluir as informações.

Para excluir uma assinatura push no Assinante

  1. Conecte-se ao Assinante no SQL Server Management Studio, e expanda o nó do servidor.

  2. Expanda a pasta Replicação e expanda a pasta Assinaturas Locais .

  3. Clique com o botão direito do mouse na assinatura que você deseja excluir e clique em Excluir.

  4. Na caixa de diálogo de confirmação, selecione se deseja se conectar ao Publicador para excluir informações de assinatura. Se você limpar a caixa de seleção Conectar ao Publicador , deverá se conectar ao Publicador mais tarde para excluir as informações.

Usando Transact-SQL

As assinaturas push podem ser excluídas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados usados dependem do tipo de publicação ao qual a assinatura pertence.

Para excluir uma assinatura de push para um instantâneo ou publicação transacional

  1. No Publicador do banco de dados de publicação, execute sp_dropsubscription (Transact-SQL). Especifique @publication e @subscriber. Especifique um valor de todos para @article. (Opcional) Se o Distribuidor não puder ser acessado, especifique um valor de 1 para @ignore_distributor excluir a assinatura sem remover objetos relacionados no Distribuidor.

  2. No Assinante do banco de dados de assinatura, execute sp_subscription_cleanup (Transact-SQL) para remover metadados de replicação no banco de dados de assinatura.

Excluir uma assinatura push de uma publicação de mesclagem

  1. No Publicador, execute sp_dropmergesubscription (Transact-SQL), especificando os parâmetros @publication, @subscriber e @subscriber_db. (Opcional) Se o Distribuidor não puder ser acessado, especifique um valor de 1 para @ignore_distributor excluir a assinatura sem remover objetos relacionados no Distribuidor.

  2. No Assinante do banco de dados de assinatura, execute sp_mergesubscription_cleanup (Transact-SQL). Especifique @publisher, @publisher_db e @publication. Isto suprime os metadados de mesclagem do banco de dados de assinatura.

Exemplos (Transact-SQL)

Este exemplo exclui uma assinatura push para 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 [AdventureWorks2012]
EXEC sp_dropsubscription 
  @publication = @publication, 
  @article = N'all',
  @subscriber = @subscriber;
GO

Este exemplo exclui uma assinatura push para uma publicação de mesclagem.

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

Usando Objetos de Gerenciamento de Replicação (RMO)

As classes RMO que você usa para excluir uma assinatura push dependem do tipo de publicação na qual a assinatura push é assinada.

Para excluir uma assinatura push de uma publicação de instantâneo ou transacional

  1. Crie uma conexão com o Assinante usando a ServerConnection classe.

  2. Criar uma instância da classe TransSubscription.

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

  4. Defina o ServerConnection da etapa 1 para a propriedade ConnectionContext.

  5. Verifique a IsExistingObject propriedade para verificar se a assinatura existe. Se o valor dessa propriedade for false, as propriedades da assinatura na etapa 2 foram definidas incorretamente ou a assinatura não existe.

  6. Chame o método Remove .

Para excluir uma assinatura push para uma publicação de mesclagem

  1. Crie uma conexão com o Assinante usando a ServerConnection classe.

  2. Criar uma instância da classe MergeSubscription.

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

  4. Configure o ServerConnection da etapa 1 para a propriedade ConnectionContext.

  5. Verifique a IsExistingObject propriedade para verificar se a assinatura existe. Se o valor dessa propriedade for false, as propriedades da assinatura na etapa 2 foram definidas incorretamente ou a assinatura não existe.

  6. Chame o método Remove .

Exemplos (RMO)

Você pode excluir assinaturas push programaticamente usando RMO (Replication Management Objects).

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

Consulte Também

Assinar publicações
Práticas recomendadas de segurança de replicação