Como excluir uma publicação (Programação Transact-SQL de replicação)

As publicações podem ser excluídas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados que você usar dependerão do tipo de publicação a ser excluída.

ObservaçãoObservação

Excluir uma publicação não remove objetos publicados do banco de dados de publicação ou objetos correspondentes do banco de dados de assinatura. Use o comando DROP <object> para remover esses objetos manualmente, se necessário.

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

  1. Siga um destes procedimentos:

    • Para excluir uma única publicação, execute sp_droppublication no Publicador do banco de dados de publicação.

    • Para excluir todas as publicações e remover todos os objetos de replicação de um banco de dados publicado, execute sp_removedbreplication no Publicador. Especifique um valor de tran para @type. (Opcional) Se o Distribuidor não puder ser acessado ou se o status do banco de dados estiver suspeito ou offline, especifique um valor 1 para @force. (Opcional) Especifique o nome do banco de dados para @dbname se sp_removedbreplication não for executado no banco de dados de publicação.

      ObservaçãoObservação

      Especificar um valor 1 para @force pode deixar objetos de publicação relacionados a replicação no banco de dados.

  2. (Opcional) Se esse banco de dados não tem outras publicações, execute sp_replicationdboption (Transact-SQL) para desabilitar publicação do banco de dados atual usando replicação de instantâneo ou transacional.

  3. (Opcional) No Assinante no banco de dados de assinatura, execute sp_subscription_cleanup para remover quaisquer metadados de replicação remanescentes no banco de dados de assinatura.

Para excluir uma publicação de mesclagem

  1. Siga um destes procedimentos:

    • Para excluir uma única publicação, execute sp_dropmergepublication (Transact-SQL) no Publicador do banco de dados de publicação.

    • Para excluir todas as publicações e remover todos os objetos de replicação de um banco de dados publicado, execute sp_removedbreplication no Publicador. Especifique um valor de merge para @type. (Opcional) Se o Distribuidor não puder ser acessado ou se o status do banco de dados estiver suspeito ou offline, especifique um valor 1 para @force. (Opcional) Especifique o nome do banco de dados para @dbname se sp_removedbreplication não for executado no banco de dados de publicação.

      ObservaçãoObservação

      Especificar um valor 1 para @force pode deixar objetos de publicação relacionados a replicação no banco de dados.

  2. (Opcional) Se esse banco de dados não tiver outras publicações, execute sp_replicationdboption (Transact-SQL) para desabilitar publicação do banco de dados atual usando replicação de mesclagem.

  3. (Opcional) No Assinante no banco de dados de assinatura, execute sp_mergesubscription_cleanup (Transact-SQL) para remover quaisquer metadados de replicação remanescentes no banco de dados de assinatura.

Exemplo

Este exemplo mostra como remover uma publicação transacional e desabilitar publicação transacional para um banco de dados. Este exemplo pressupõe que todas as assinaturas foram previamente removidas. Para obter mais informações, consulte Como excluir uma assinatura pull (Programação Transact-SQL de replicação) ou Como excluir uma assinatura push (Programação Transact-SQL de replicação).

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

Este exemplo mostra como remover uma publicação de mesclagem e desabilitar publicação de mesclagem para um banco de dados. Este exemplo pressupõe que todas as assinaturas foram previamente removidas. Para obter mais informações, consulte Como excluir uma assinatura pull (Programação Transact-SQL de replicação) ou Como excluir uma assinatura push (Programação Transact-SQL de replicação).

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks'

-- Remove the merge publication.
USE [AdventureWorks]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO