如何:刪除發行集 (複寫 Transact-SQL 程式設計)

您可以使用複寫預存程序以程式設計的方式刪除發行集。 使用哪些預存程序取決於所要刪除的發行集類型而定。

[!附註]

刪除發行集不會從發行集資料庫中移除發行的物件,或是從訂閱資料庫中移除對應物件。 必要的話,請使用 DROP <object> 命令來手動移除這些物件。

刪除快照式或交易式發行集

  1. 執行下列其中之一:

    • 若要刪除單一發行集,請在發行集資料庫的發行者上執行 sp_droppublication

    • 若要從發行的資料庫中刪除所有發行集及移除所有複寫物件,請在發行者上執行 sp_removedbreplication。 針對 @type 指定 tran 的值。 (選擇性) 如果無法存取散發者,或是資料庫的狀態有疑問或離線,請針對 @force 指定 1 的值。 (選擇性) 如果未在發行集資料庫上執行 sp_removedbreplication,請針對 @dbname 指定資料庫的名稱。

      [!附註]

      針對 @force 指定 1 的值可能會將與複寫有關的發行物件留在資料庫中。

  2. (選擇性) 如果此資料庫沒有任何其他發行集,請執行sp_replicationdboption (Transact-SQL),以便使用快照式或交易式複寫來停用目前資料庫的發行集。

  3. (選擇性) 在訂閱資料庫的訂閱者上,執行 sp_subscription_cleanup 來移除訂閱資料庫中任何剩餘的複寫中繼資料。

刪除合併式發行集

  1. 執行下列其中之一:

    • 若要刪除單一發行集,請在發行集資料庫的發行者上執行 sp_dropmergepublication (Transact-SQL)

    • 若要從發行的資料庫中刪除所有發行集及移除所有複寫物件,請在發行者上執行 sp_removedbreplication。 針對 @type 指定 merge 的值。 (選擇性) 如果無法存取散發者,或是資料庫的狀態有疑問或離線,請針對 @force 指定 1 的值。 (選擇性) 如果未在發行集資料庫上執行 sp_removedbreplication,請針對 @dbname 指定資料庫的名稱。

      [!附註]

      針對 @force 指定 1 的值可能會將與複寫有關的發行物件留在資料庫中。

  2. (選擇性) 如果此資料庫沒有任何其他發行集,請執行 sp_replicationdboption (Transact-SQL),以便使用合併式複寫來停用目前資料庫的發行集。

  3. (選擇性) 在訂閱資料庫的訂閱者上,執行 sp_mergesubscription_cleanup (Transact-SQL) 來移除訂閱資料庫中任何剩餘的複寫中繼資料。

範例

此範例會示範如何移除交易式發行集,並針對資料庫停用交易式發行。 這個範例假設之前已移除所有的訂閱。 如需詳細資訊,請參閱<如何:刪除提取訂閱 (複寫 Transact-SQL 程式設計)>或<如何:刪除發送訂閱 (複寫 Transact-SQL 程式設計)>。

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

此範例會示範如何移除合併式發行集,並針對資料庫停用合併式發行。 這個範例假設之前已移除所有的訂閱。 如需詳細資訊,請參閱<如何:刪除提取訂閱 (複寫 Transact-SQL 程式設計)>或<如何:刪除發送訂閱 (複寫 Transact-SQL 程式設計)>。

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks2008R2'

-- Remove the merge publication.
USE [AdventureWorks2008R2]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO