SQL Server: Melhor forma de remover uma replicação

Trabalhar com replicação de dados é muitas vezes necessário e não necessariamente é uma prática utilizada em todas as organizações.
Sobre o conceito da replicação, neste post eu expliquei (espero que de forma clara) em que consiste a replicação.

Aqui falarei mais sobre a forma mais adequada para remover de um banco de dados a assinatura de replicação.
No caso, o comando é sp_removedbreplication. É algo simples, rápido, seguro e confiável.
Seguro e confiável porque não há risco de ficarem dependências para trás que podem ocasionar em futuros problemas.

Se houver uma replicação do tipo “merge” (dois ou mais servidores trocando dados simultaneamente), sendo por algum motivo necessário desabilitar e recebendo o erro “Invalid object name ‘dbo.sysmergesubscriptions’“, provavelmente o comando sp_removedbreplication será necessário ser aplicado.

Antes de explicar melhor isto, vamos entender em quais outras situações o sp_removedbreplication se aplica:

  • Pode ser usado em todos tipos de replicação;
  • Útil quando a restauração de um banco de dados replicado não possui objetos de replicação que precisam ser restaurados;
  • Não pode ser usado enquanto o banco de dados estiver marcado para somente leitura.

Atenção: Somente membros do sysadmin tem a permissão para aplicar este comando.
Não me responsabilizo por possíveis danos caso não esteja totalmente seguro para execução.
Leia tudo com atenção, se for necessário faça por sua conta e risco.
Este procedimento EXCLUI toda replicação, se necessário deverá ser criado e configurado tudo novamente (o que também não é algo do outro mundo!).

Exemplo:

-- Exclui objetos de replicação de assinatura do banco de dados
DECLARE @DBsubscription as sysname
SET @DBsubscription = N'SeuBanco'

Use master
exec sp_removedbreplication @DBsubscription
GO

No caso de replicação merge e se necessário eu recomendo desabilitar a opção de merge publish, tanto no banco do servidor de distribuição como no servidor assinante – embora conceitualmente os artigos entre os mesmos são sincronizados.

sp_replicationdboption 'SeuBanco','merge publish','false'

Aproveitando o assunto, por curiosidade e por ser útil até para uma outra possível necessidade: para habilitar a opção de merge publish nos servidores, basta trocar o parâmetro ‘false’ por ‘true’.

sp_replicationdboption 'SeuBanco','merge publish','true'

Se aplicar todo este conceito, na verdade estará desfazendo TODA replicação entre servidores.
Note que os jobs usados para criar snapshots e para sincronismo são EXCLUIDOS.

Se for necessário refazer a replicação após este procedimento, não haverá problemas.

O assunto é bastante extenso, se tiver algo a acrescentar sobre este procedimento, fique a vontade para comentar!

Até a próxima.

One thought on “SQL Server: Melhor forma de remover uma replicação

  1. Pingback: Replicação de Dados (Passo a Passo utilizando o SQL Server 2008) « Alex Souza

Deixe uma resposta