domingo, 13 de noviembre de 2016

Forzar la eliminación de objetos en una Replicación

Cuando una replicación deja de funcionar apropiadamente y reiniciarla no basta, a veces es necesario borrarla y volverla a crear, pero el mismo daño que tiene no deja borrarla con las herramientas gráficas, por lo que tenemos que usar script con el parámetro, @ignore_distributor=1. Aquí un ejemplo de los procedimientos a ejecutar:

Forzar la eliminación del suscriptor.
--Seleccione la base de datos con la publicación
USE Northwind
GO
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;

--Nombre de la publicación
SET @publication = N'NorthwindPub';
--Nombre de la suscripcion
SET @subscriber = N'NorthiwndSub';

USE Northwind
EXEC sp_dropsubscription
@publication = @publication,
@article = N'all',
@subscriber = @subscriber,
@ignore_distributor=1;
GO

Forzar la eliminación de la publicación.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;

--Nombre de la base de datos con la publicación
SET @publicationDB = N'Northwind';

--Nombre de la publicación
SET @publication = N'NorthwindPub';

-- Remover la publicación
USE Northwind
EXEC sp_droppublication
@publication = @publication,
@ignore_distributor=1;

-- Remover objetos de la publicación
USE [master]
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'publish',
@value = N'false';
GO

Eliminar el distribuidor del servidor:

USE master
GO
EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1
GO