Compartilhar via


sp_dropmergearticle (Transact-SQL)

Aplica-se: SQL Server

Remove um artigo de uma publicação de mesclagem. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

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

Argumentos

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

O nome da publicação da qual um artigo será retirado. @publication é sysname, sem padrão.

@article [ = ] N'artigo'

O nome do artigo a ser retirado da publicação fornecida. @article é sysname, sem padrão. Se all, todos os artigos existentes na publicação de mesclagem especificada serão removidos. Mesmo @article sejaall, a publicação ainda deve ser descartada separadamente do artigo.

@ignore_distributor [ = ] ignore_distributor

Indica se esse procedimento armazenado será executado sem se conectar 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 ter um instantâneo invalidado. @force_invalidate_snapshot é bit, com um padrão de 0.

  • 0 Especifica que as alterações no artigo de mesclagem não fazem com que o instantâneo seja inválido.

  • 1 significa que as alterações no artigo de mesclagem podem fazer com que o instantâneo seja inválido e, se for esse o caso, um valor de 1 dá permissão para que o novo instantâneo ocorra.

@force_reinit_subscription [ = ] force_reinit_subscription

Confirma que a remoção do artigo exige que as assinaturas existentes sejam reinicializadas. @force_reinit_subscription é bit, com um padrão de 0.

  • 0 Especifica que descartar o artigo não faz com que a assinatura seja reinicializada.

  • 1 significa que descartar o artigo faz com que as assinaturas existentes sejam reinicializadas e dá permissão para que a reinicialização da assinatura ocorra.

@ignore_merge_metadata [ = ] ignore_merge_metadata

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_dropmergearticle é usado na replicação de mesclagem. Para obter mais informações sobre como descartar artigos, consulte Adicionar artigos e descartar artigos de publicações existentes.

A execução sp_dropmergearticle para descartar um artigo de uma publicação não remove o objeto do banco de dados de publicação ou o objeto correspondente do banco de dados de assinatura. Use DROP <object> para remover esses objetos manualmente, se necessário.

Permissões

Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_dropmergearticleo .

Exemplos

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

R. Remover artigos de uma publicação de mesclagem

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