Compartir a través de


sp_dropmergearticle (Transact-SQL)

Se aplica a: SQL Server

Quita un artículo de una publicación de combinación. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_dropmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @reserved = ] reserved ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @ignore_merge_metadata = ] ignore_merge_metadata ]
[ ; ]

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación desde la que se va a quitar un artículo. @publication es sysname, sin ningún valor predeterminado.

[ @article = ] N'article'

Nombre del artículo que se va a quitar de la publicación especificada. @article es sysname, sin ningún valor predeterminado. Si alles , se quitan todos los artículos existentes de la publicación de combinación especificada. Incluso si @article es all, la publicación todavía debe quitarse por separado del artículo.

[ @ignore_distributor = ] ignore_distributor

Indica si este procedimiento almacenado se ejecuta sin conectarse al distribuidor. @ignore_distributor es bit, con un valor predeterminado de 0.

[ @reserved = ] reserved

Reservado para uso futuro. @reserved es bit, con un valor predeterminado de 0.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Habilita o deshabilita la capacidad de que se invalide una instantánea. @force_invalidate_snapshot es bit, con un valor predeterminado de 0.

  • 0 especifica que los cambios realizados en el artículo de combinación no hacen que la instantánea no sea válida.

  • 1 significa que los cambios realizados en el artículo de combinación pueden hacer que la instantánea no sea válida y, si es así, un valor de 1 concede permiso para que se produzca la nueva instantánea.

[ @force_reinit_subscription = ] force_reinit_subscription

Confirma que para quitar el artículo deben reinicializarse las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0.

  • 0 especifica que quitar el artículo no hace que se reinicialice la suscripción.

  • 1 significa que quitar el artículo hace que se reinicialicen las suscripciones existentes y se concede permiso para que se produzca la reinicialización de la suscripción.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_dropmergearticle se usa en la replicación de mezcla. Para obtener más información sobre cómo quitar artículos, vea Agregar artículos a y quitar artículos de publicaciones existentes.

sp_dropmergearticle La ejecución de para quitar un artículo de una publicación no quita el objeto de la base de datos de publicación ni el objeto correspondiente de la base de datos de suscripciones. Si es necesario, utilice DROP <object> para quitar estos objetos manualmente.

Permisos

Solo los miembros del rol fijo de servidor sysadmin o el rol fijo de base de datos db_owner pueden ejecutar sp_dropmergearticle.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se puede descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

A Quitar artículos de una publicación de combinación

USE [AdventureWorks2022];
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';

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article1,
    @force_invalidate_snapshot = 1;

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article2,
    @force_invalidate_snapshot = 1;
GO
USE [AdventureWorks2022];
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;

-- Drop 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;

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

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

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