Cómo eliminar una publicación (programación de la replicación con Transact-SQL)

Las publicaciones pueden eliminarse mediante programación con procedimientos almacenados de replicación. Los procedimientos almacenados que use dependen del tipo de publicación que se elimina.

[!NOTA]

Al eliminar una publicación, no se quitan los objetos publicados de la base de datos de publicación ni los objetos correspondientes de la base de datos de suscripciones. Si es necesario, use el comando DROP <object> para quitar estos objetos manualmente.

Para eliminar una publicación transaccional o de instantáneas

  1. Realice una de las siguientes operaciones:

    • Para eliminar una publicación, ejecute sp_droppublication en la base de datos de publicación del publicador.

    • Para eliminar todas las publicaciones de una base de datos publicada y quitar todos sus objetos de replicación, ejecute sp_removedbreplication en el publicador. Especifique el valor de tran para @type. (Opcional) Si no se puede tener acceso al distribuidor, o bien si el estado de la base de datos es sospechoso o está sin conexión, especifique un valor de 1 para @force. (Opcional) Especifique el nombre de la base de datos para @dbname si sp_removedbreplication no se ejecuta en la base de datos de publicación.

      [!NOTA]

      Especificar un valor de 1 para @force puede dejar los objetos de publicación relacionados con la replicación en la base de datos.

  2. (Opcional) Si esta base de datos no tiene otras publicaciones, ejecute sp_replicationdboption (Transact-SQL) para deshabilitar la publicación de la base de datos actual mediante la replicación transaccional o de instantáneas.

  3. (Opcional) En la base de datos de suscripciones del suscriptor, ejecute sp_subscription_cleanup para quitar los metadatos de replicación restantes en la base de datos de suscripciones.

Para eliminar una publicación de mezcla

  1. Realice una de las siguientes operaciones:

    • Para eliminar una publicación, ejecute sp_dropmergepublication (Transact-SQL) en la base de datos de publicación del publicador.

    • Para eliminar todas las publicaciones de una base de datos publicada y quitar todos sus objetos de replicación, ejecute sp_removedbreplication en el publicador. Especifique el valor de merge para @type. (Opcional) Si no se puede tener acceso al distribuidor, o bien si el estado de la base de datos es sospechoso o está sin conexión, especifique un valor de 1 para @force. (Opcional) Especifique el nombre de la base de datos para @dbname si sp_removedbreplication no se ejecuta en la base de datos de publicación.

      [!NOTA]

      Especificar un valor de 1 para @force puede dejar los objetos de publicación relacionados con replicación en la base de datos.

  2. (Opcional) Si esta base de datos no tiene otras publicaciones, ejecute sp_replicationdboption (Transact-SQL) para deshabilitar la publicación de la base de datos actual con la replicación de mezcla.

  3. (Opcional) En la base de datos de suscripciones del suscriptor, ejecute sp_mergesubscription_cleanup (Transact-SQL) para quitar los metadatos de replicación restantes en la base de datos de suscripciones.

Ejemplo

Este ejemplo muestra cómo quitar una publicación transaccional y deshabilitar la publicación transaccional para una base de datos. Este ejemplo supone que se quitaron todas las suscripciones previamente. Para obtener más información, vea Cómo eliminar una suscripción de extracción (programación de la replicación con Transact-SQL) o Cómo eliminar una suscripción de inserción (programación de la replicación con Transact-SQL).

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 ejemplo muestra cómo quitar una publicación de mezcla y deshabilitar la publicación de mezcla para una base de datos. Este ejemplo supone que se quitaron todas las suscripciones previamente. Para obtener más información, vea Cómo eliminar una suscripción de extracción (programación de la replicación con Transact-SQL) o Cómo eliminar una suscripción de inserción (programación de la replicación con Transact-SQL).

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