Odstranění článku

Platí pro:SQL ServerAzure SQL Managed Instance

Toto téma popisuje, jak smazat článek v SQL Server pomocí Transact-SQL nebo Replication Management Objects (RMO). Pro informace o podmínkách, za kterých lze články zrušit, a zda odstranění článku vyžaduje nový snapshot nebo znovuzahájení předplatného, viz Přidat články a odebrat články z existujících publikací.

Použití Transact-SQL

Články lze programově mazat pomocí replikačních uložených procedur. Uložené postupy, které použijete, závisí na typu publikace, ke které článek patří.

Smazání článku ze snapshotu nebo transakční publikace

  1. Proveďte sp_droparticle (Transact-SQL) pro smazání článku, specifikovaného @article, z publikace, kterou určil @publication. Zadejte hodnotu 1 pro @force_invalidate_snapshot.

  2. (Volitelné) Pro úplné odstranění publikovaného objektu z databáze spusťte DROP <objectname> příkaz v Publisher databázi publikací.

Smazání článku z publikace pro sloučení

  1. Proveďte sp_dropmergearticle (Transact-SQL) pro smazání článku, specifikovaného @article, z publikace specifikované @publication. Pokud je to nutné, určeme hodnotu 1 pro @force_invalidate_snapshot a hodnotu 1 pro @force_reinit_subscription.

  2. (Volitelné) Pro úplné odstranění publikovaného objektu z databáze spusťte DROP <objectname> příkaz v Publisher databázi publikací.

Příklady (Transact-SQL)

Následující příklad maže článek z transakční publikace. Protože tato změna zneplatňuje stávající snímek, je pro parametr @force_invalidate_snapshot určena hodnota 1.

DECLARE @publication AS sysname;  
DECLARE @article AS sysname;  
SET @publication = N'AdvWorksProductTran';   
SET @article = N'Product';   
  
-- Drop the transactional article.  
USE [AdventureWorks]  
EXEC sp_droparticle   
  @publication = @publication,   
  @article = @article,  
  @force_invalidate_snapshot = 1;  
GO  

Následující příklad maže dva články z publikace při sloučení. Protože tyto změny zneplatňují stávající snímek, je pro parametr @force_invalidate_snapshot určena hodnota 1.

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  

Použití objektů správy replikace (RMO)

Články můžete programově mazat pomocí Replication Management Objects (RMO). Třídy RMO, které použijete k mazání článku, závisí na typu publikace, ke které článek patří.

Odstranění článku patřícího do snímkové nebo transakční publikace

  1. Vytvořte připojení k Publisheru pomocí ServerConnection třídy.

  2. Vytvořte instanci TransArticle třídy.

  3. Nastavte vlastnosti Name, PublicationNamea DatabaseName.

  4. Nastavte připojení z kroku 1 pro vlastnost ConnectionContext.

  5. Zkontrolujte vlastnost IsExistingObject, abyste ověřili, zda článek existuje. Pokud je hodnota této vlastnosti nepravdivá, buď byly vlastnosti článku v kroku 3 definovány nesprávně, nebo článek neexistuje.

  6. Zavolejte metodu Remove .

  7. Uzavřete všechna připojení.

Odstranění článku, který patří do publikace sloučení

  1. Vytvořte připojení k Publisheru pomocí ServerConnection třídy.

  2. Vytvořte instanci MergeArticle třídy.

  3. Nastavte vlastnosti Name, PublicationNamea DatabaseName.

  4. Nastavte připojení z kroku 1 pro vlastnost ConnectionContext.

  5. Zkontrolujte vlastnost IsExistingObject, abyste ověřili, zda článek existuje. Pokud je hodnota této vlastnosti nepravdivá, buď byly vlastnosti článku v kroku 3 definovány nesprávně, nebo článek neexistuje.

  6. Zavolejte metodu Remove .

  7. Uzavřete všechna připojení.