Compartir a través de


Eliminar un artículo

En este tema se describe cómo eliminar un artículo de SQL Server 2014 mediante Transact-SQL o Replication Management Objects (RMO). Para obtener información sobre las condiciones en las que se pueden quitar los artículos y si la eliminación de un artículo requiere una nueva instantánea o la reinicialización de las suscripciones, vea Agregar artículos a y quitar artículos de publicaciones existentes.

Uso de Transact-SQL

Los artículos se pueden eliminar mediante programación utilizando procedimientos almacenados de replicación. Los procedimientos almacenados que use dependen del tipo de publicación al que pertenece el artículo.

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

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

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

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

  1. Ejecute sp_dropmergearticle (Transact-SQL) para eliminar un artículo, especificado por @article, de una publicación, especificada 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 el objeto publicado de la base de datos por completo, ejecute el DROP <objectname> comando en el publicador de la base de datos de publicación.

Ejemplos (Transact-SQL)

En el ejemplo siguiente 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 [AdventureWorks2012]
EXEC sp_droparticle 
  @publication = @publication, 
  @article = @article,
  @force_invalidate_snapshot = 1;
GO

En el ejemplo siguiente se eliminan dos artículos de una publicación de combinación. 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 @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 [AdventureWorks]
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article1,
  @force_invalidate_snapshot = 1;
EXEC sp_dropmergearticle 
  @publication = @publication, 
  @article = @article2,
  @force_invalidate_snapshot = 1;
GO
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

El uso de Replication Management Objects (RMO)

Puede eliminar artículos mediante programación mediante Replication Management Objects (RMO). Las clases de RMO que se usan para eliminar un artículo dependen del tipo de publicación al que pertenece el artículo.

Para eliminar un artículo que pertenece a una publicación instantánea o transaccional

  1. Cree una conexión al publicador mediante la clase ServerConnection .

  2. Cree una instancia de la clase TransArticle.

  3. Establezca las propiedades Name, PublicationNamey DatabaseName .

  4. Establezca la conexión del paso 1 para la propiedad ConnectionContext.

  5. Compruebe la IsExistingObject propiedad para comprobar que el artículo existe. Si el valor de esta propiedad es false, las propiedades del artículo del paso 3 se definieron incorrectamente o el artículo no existe.

  6. Llame al método Remove.

  7. Cierre todas las conexiones.

Para eliminar un artículo que pertenece a una publicación de combinación

  1. Cree una conexión al publicador mediante la clase ServerConnection .

  2. Cree una instancia de la clase MergeArticle.

  3. Establezca las propiedades Name, PublicationNamey DatabaseName .

  4. Establezca la conexión del paso 1 para la propiedad ConnectionContext.

  5. Compruebe la IsExistingObject propiedad para comprobar que el artículo existe. Si el valor de esta propiedad es false, las propiedades del artículo del paso 3 se definieron incorrectamente o el artículo no existe.

  6. Llame al método Remove.

  7. Cierre todas las conexiones.

Véase también

Agregar y quitar artículos de publicaciones existentes
Conceptos de procedimientos almacenados del sistema de replicación