Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como excluir um artigo no SQL Server 2014 usando Transact-SQL ou RMO (Replication Management Objects). Para obter informações sobre as condições nas quais os artigos podem ser removidos e se a remoção de um artigo requer um novo instantâneo ou a reinicialização das assinaturas, consulte Adicionar Artigos e Remover Artigos de Publicações Existentes.
Usando Transact-SQL
Os artigos podem ser excluídos programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados que você usa dependem do tipo de publicação ao qual o artigo pertence.
Para excluir um artigo de um instantâneo ou publicação transacional
Execute sp_droparticle (Transact-SQL) para excluir um artigo, especificado por @article, de uma publicação, especificada por @publication. Especifique um valor de 1 para @force_invalidate_snapshot.
(Opcional) Para remover totalmente o objeto publicado do banco de dados, execute o
DROP <objectname>comando no Publicador no banco de dados de publicação.
Para excluir um artigo de uma publicação de mesclagem
Execute sp_dropmergearticle (Transact-SQL) para excluir um artigo, especificado por @article, de uma publicação, especificada por @publication. Se necessário, especifique um valor de 1 para @force_invalidate_snapshot e um valor de 1 para @force_reinit_subscription.
(Opcional) Para remover totalmente o objeto publicado do banco de dados, execute o
DROP <objectname>comando no Publicador no banco de dados de publicação.
Exemplos (Transact-SQL)
O exemplo a seguir exclui um artigo de uma publicação transacional. Como essa alteração invalida o instantâneo existente, um valor 1 é especificado para o 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 [AdventureWorks2012]
EXEC sp_droparticle
@publication = @publication,
@article = @article,
@force_invalidate_snapshot = 1;
GO
O exemplo a seguir exclui dois artigos de uma publicação de mesclagem. Como essas alterações invalidam o instantâneo existente, um valor de 1 é especificado para o 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
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;
-- Drops 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;
-- Drops the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle
@publication = @publication,
@article = @table3,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drops the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Drops the article for the Employee table.
EXEC sp_dropmergearticle
@publication = @publication,
@article = @table1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Usando Objetos de Gerenciamento de Replicação (RMO)
Você pode excluir artigos programaticamente usando RMO (Replication Management Objects). As classes RMO que você usa para excluir um artigo dependem do tipo de publicação ao qual o artigo pertence.
Para excluir um artigo que pertence a um instantâneo ou publicação transacional
Crie uma conexão com o Publicador usando a classe ServerConnection .
Criar uma instância da classe TransArticle.
Defina as propriedades Name, PublicationNamee DatabaseName .
Defina a conexão da etapa 1 para a propriedade ConnectionContext.
Verifique a IsExistingObject propriedade para verificar se o artigo existe. Se o valor dessa propriedade for
false, as propriedades do artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.Chame o método Remove .
Feche todas as conexões.
Para excluir um artigo que pertence a uma publicação de mesclagem
Crie uma conexão com o Publicador usando a classe ServerConnection .
Criar uma instância da classe MergeArticle.
Defina as propriedades Name, PublicationNamee DatabaseName .
Defina a conexão da etapa 1 para a propriedade ConnectionContext.
Verifique a IsExistingObject propriedade para verificar se o artigo existe. Se o valor dessa propriedade for
false, as propriedades do artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.Chame o método Remove .
Feche todas as conexões.
Consulte Também
Adicionar artigos e remover artigos de publicações existentes
Conceitos de procedimentos armazenados do sistema de replicação