Cómo eliminar un artículo (programación de la replicación con Transact-SQL)

Los artículos pueden eliminarse mediante programación con procedimientos almacenados de replicación. Los procedimientos almacenados que se usen dependerán del tipo de publicación a la que pertenece el artículo. Para obtener información sobre las condiciones con las que se pueden colocar los artículos, y si la colocación de un artículo requiere una nueva instantánea o la reinicialización de las suscripciones, vea Agregar y quitar artículos de publicaciones existentes.

Para eliminar un artículo de una publicación de instantáneas o transaccional

  1. Ejecute sp_droparticle (Transact-SQL) para eliminar un artículo, especificado con @article, de una publicación, especificada con @publication. Especifique un valor de 1 para @force_invalidate_snapshot.

  2. (Opcional) Para quitar completamente el objeto publicado de la base de datos, ejecute el comando DROP <objectname> en el publicador de la base de datos de publicación.

Para eliminar un artículo de una publicación de mezcla

  1. Ejecute sp_dropmergearticle (Transact-SQL) para eliminar un artículo, especificado por @article, de una publicación, especificado por @publication. Si es necesario, especifique un valor de 1 para @force_invalidate_snapshot y un valor de 1 para @force_reinit_subscription.

  2. (Opcional) Para quitar completamente el objeto publicado de la base de datos, ejecute el comando DROP <objectname> en el publicador de la base de datos de publicación.

Ejemplo

En el siguiente ejemplo se elimina un artículo de una publicación transaccional Dado que este cambio invalida la instantánea existente, se especifica un valor de 1 para el parámetro @force_invalidate_snapshot.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @article = N'Product'; 

-- Drop the transactional article.
USE [AdventureWorks2008R2]
EXEC sp_droparticle 
  @publication = @publication, 
  @article = @article,
  @force_invalidate_snapshot = 1;
GO

El ejemplo siguiente elimina dos artículos de una publicación de mezcla. Dado que estos cambios invalidan la instantánea existente, se especifica un valor de 1 para el parámetro @force_invalidate_snapshot.

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table3,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Drops the article for the Employee table.
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @table1,
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

DECLARE @publication AS sysname;
DECLARE @article1 AS sysname;
DECLARE @article2 AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail'; 
SET @article2 = N'SalesOrderHeader'; 

-- Remove articles from a merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article1,
  @force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article2,
  @force_invalidate_snapshot = 1;
GO