Cómo deshabilitar la publicación y distribución (programación de la replicación con Transact-SQL)

Puede deshabilitarse la publicación y la distribución mediante programación con los procedimientos almacenados de la replicación.

Para deshabilitar la publicación y la distribución

  1. Detenga todos los trabajos relacionados con replicación. Para obtener una lista de nombres de tarea, vea la sección "Seguridad de agentes con el Agente SQL Server" de Modelo de seguridad del Agente de replicación.

  2. En cada suscriptor de la base de datos de suscripciones, ejecute sp_removedbreplication para quitar los objetos de replicación de dicha base de datos. Este procedimiento almacenado no quitará los trabajos de replicación del distribuidor.

  3. En la base de datos de publicación del publicador, ejecute sp_removedbreplication para quitar los objetos de replicación de dicha base de datos.

  4. Si el publicador usa un distribuidor remoto, ejecute sp_dropdistributor.

  5. En el distribuidor, ejecute sp_dropdistpublisher. Este procedimiento almacenado se debería ejecutar una vez para cada publicador registrado en el distribuidor.

  6. En el distribuidor, ejecute sp_dropdistributiondb para eliminar la base de datos de distribución. Este procedimiento almacenado se debería ejecutar una vez para cada base de datos de distribución en el distribuidor. Esto también quita cualquier trabajo del Agente de lectura de cola asociado a la base de datos de distribución.

  7. En el distribuidor, ejecute sp_dropdistributor para quitar la designación de distribuidor del servidor.

    Nota

    Si no se eliminan todos los objetos de distribución y publicación de replicación antes de ejecutar sp_dropdistpublisher y sp_dropdistributor, estos procedimientos devolverán un error. Para eliminar todos los objetos relacionados con la replicación cuando se elimina un publicador o un distribuidor, el parámetro @no_checks debe estar establecido en 1. Si un publicador o un distribuidor no tienen conexión o están inaccesibles, el parámetro @ignore_distributor puede estar establecido en 1 para que se puedan eliminar; sin embargo, todos los objetos de publicación y distribución omitidos deben quitarse manualmente.

Ejemplo

Este script de ejemplo quita los objetos de replicación de la base de datos de suscripciones.

-- Remove replication objects from the subscription database on MYSUB.
DECLARE @subscriptionDB AS sysname
SET @subscriptionDB = N'AdventureWorks2008R2Replica'

-- Remove replication objects from a subscription database (if necessary).
USE master
EXEC sp_removedbreplication @subscriptionDB
GO

Este script de ejemplo deshabilita la publicación y la distribución en un servidor que sea publicador y distribuidor, y elimina la base de datos de distribución.

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

-- Disable publishing and distribution.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB as sysname;
SET @distributionDB = N'distribution';
SET @publisher = $(DistPubServer);
SET @publicationDB = N'AdventureWorks2008R2';

-- Disable the publication database.
USE [AdventureWorks2008R2]
EXEC sp_removedbreplication @publicationDB;

-- Remove the registration of the local Publisher at the Distributor.
USE master
EXEC sp_dropdistpublisher @publisher;

-- Delete the distribution database.
EXEC sp_dropdistributiondb @distributionDB;

-- Remove the local server as a Distributor.
EXEC sp_dropdistributor;
GO