Partilhar via


sp_dropmergearticle (Transact-SQL)

Aplica-se a:SQL Server

Remove um artigo de uma publicação de fusão. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Sintaxe

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 ]
[ ; ]

Arguments

[ @publication = ] N'publicação'

O nome da publicação de onde se deve lançar um artigo. @publication é sysname, sem padrão.

[ @article = ] N'artigo'

O nome do artigo deve ser retirado da publicação em questão. @article é sysname, sem padrão. Se all, todos os artigos existentes na publicação de fusão especificada são removidos. Mesmo que @article seja all, a publicação deve ser retirada separadamente do artigo.

[ @ignore_distributor = ] ignore_distributor

Indica se este procedimento armazenado é executado sem se ligar ao Distribuidor. @ignore_distributor é bit, com um padrão de 0.

[ @reserved = ] reservado

Reservado para uso futuro. @reserved é bit, com um padrão de 0.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

Habilita ou desabilita a capacidade de invalidar um snapshot. @force_invalidate_snapshot é bit, com um padrão de 0.

  • 0 especifica que alterações ao artigo de fusão não tornam o snapshot inválido.

  • 1 significa que alterações ao artigo de fusão podem tornar o snapshot inválido e, se for esse o caso, um valor de 1 dá permissão para que o novo snapshot ocorra.

@force_reinit_subscription [ = ] force_reinit_subscription

Reconhece que a retirada do artigo requer a reinicialização das subscrições existentes. @force_reinit_subscription é bit, com um padrão de 0.

  • 0 Especifica que eliminar o artigo não faz com que a subscrição seja reinicializada.

  • 1 significa que a eliminação do artigo faz com que as subscrições existentes sejam reinicializadas e dá permissão para que a reinicialização da subscrição ocorra.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

sp_dropmergearticle é usado na replicação por fusão. Para mais informações sobre a retirada de artigos, consulte Adicionar Artigos e Eliminar Artigos de Publicações Existentes.

Executar sp_dropmergearticle a eliminação de um artigo de uma publicação não remove o objeto da base de dados da publicação nem o objeto correspondente da base de dados por subscrição. Use DROP <object> para remover estes objetos manualmente, se necessário.

Permissions

Apenas os membros do papel de servidor fixo de sysadmin ou do papel de base de dados fixa db_owner podem executar sp_dropmergearticle.

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

A. Remover artigos de uma publicação de fusão

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

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

EXECUTE 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.
EXECUTE 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.
EXECUTE 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.
EXECUTE sp_dropmergearticle
    @publication = @publication,
    @article = @table3,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

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

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