Compartir a través de


Eliminar un artículo

En este tema se describe cómo eliminar un artículo en SQL Server 2012 mediante Transact-SQL o Replication Management Objects (RMO). Para obtener información sobre las condiciones en que se pueden quitar 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 y quitar artículos de publicaciones existentes.

En este tema

  • Para eliminar un artículo, mediante:

    Transact-SQL

    Replication Management Objects (RMO)

Usar 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 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 combinación

  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.

Ejemplos (Transact-SQL)

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

El ejemplo siguiente elimina 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

Icono de flecha usado con el vínculo Volver al principio[Top]

Usar Replication Management Objects (RMO)

Puede eliminar artículos mediante programación utilizando Replication Management Objects (RMO). Las clases RMO que usa 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 transaccional o de instantáneas

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

  2. Cree una instancia de la clase TransArticle.

  3. Establezca las propiedades Name, PublicationName y DatabaseName.

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

  5. Compruebe la propiedad IsExistingObject para asegurarse de que el artículo existe. Si el valor de esta propiedad es false, se definieron incorrectamente las propiedades de artículo en el paso 3, o bien 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, PublicationName y DatabaseName.

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

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

  6. Llame al método Remove.

  7. Cierre todas las conexiones.

Icono de flecha usado con el vínculo Volver al principio[Top]

Vea también

Conceptos

Agregar y quitar artículos de publicaciones existentes

Conceptos sobre los procedimientos almacenados del sistema de replicación