sp_dropmergearticle (Transact-SQL)

Aplica-se a: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 retirar um artigo. @publication é sysname, sem padrão.

@article [ = ] N'artigo'

O nome do artigo a ser retirado da publicação dada. @article é sysname, sem padrão. Se all, todos os artigos existentes na publicação de mesclagem especificada serão removidos. Mesmo que @article sejaall, a publicação ainda deve ser retirada 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 snapshot seja 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

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 o descarte do artigo não faz com que a assinatura seja reinicializada.

  • 1 significa que a retirada do 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 remover artigos, consulte Adicionar artigos e descartar artigos de publicações existentes.

A execução sp_dropmergearticle para retirar 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_dropmergearticle.

Exemplos

Este artigo requer o banco de dados de exemplo AdventureWorks2022, que pode ser baixado na 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