Compartir a través de


Eliminar un artículo

Se aplica a: SQL Server Azure SQL Managed Instance

En este tema se describe cómo eliminar un artículo en SQL Server 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

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 por @article, de una publicación, especificada por @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, 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 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 [AdventureWorks]  
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  

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, PublicationNamey 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, PublicationNamey 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.