在 SQL Server 中手動移除複寫

本文說明如何在 SQL Server 中手動移除複寫。

原始產品版本:SQL Server
原始 KB 編號: 324401

摘要

本文說明如何從執行 SQL Server Microsoft的電腦移除複寫。 若要移除複寫,您必須卸除針對複寫設定的訂閱、發行集和散發者。 您可以執行 SQL Server Enterprise Manager 或 SQL Server Management Studio 所產生的 Transact-SQL 腳本來移除複寫。 不過,如果您無法產生 Transact-SQL 腳本來移除複寫,您可以使用系統預存程式和其他 Transact-SQL 語句手動移除複寫。 本文包含可用於此程式之系統預存程式的相關信息。

注意

如需本文中提及之系統預存程式的詳細資訊,請參閱《SQL Server 在線叢書》。

手動移除複寫

您可以使用系統預存程式和其他 Transact-SQL 語句,手動移除複寫。 若要完全移除複寫,請遵循下列步驟:

  1. 卸除針對複寫設定的所有訂用帳戶。
  2. 卸除針對複寫設定的所有發行集。
  3. 卸除針對復寫設定的散發者。

注意

本文稍後會列出每種復寫類型的系統預存程式。 根據您想要移除的復寫類型,使用適當的預存程式。

卸除訂用帳戶

若要從 SQL Server 實例卸除訂用帳戶,您可以使用下列預存程式和適當的參數:

  • sp_dropsubscription :您可以使用 sp_dropsubscription 系統預存程式,將訂閱卸除至發行者上的特定發行項、發行集或訂閱集。 您必須在發行集資料庫的發行者伺服器上執行預存程式。

  • sp_droppullsubscription :您可以使用 sp_droppullsubscription 系統預存程式,卸除訂閱者目前資料庫的訂閱。 您必須在提取訂閱資料庫的訂閱者端執行預存程式。

  • sp_dropmergesubscription:您可以使用sp_dropmergesubscription系統預存程式卸除合併式發行集的訂閱,以及與合併式發行集相關聯的 合併代理程式。 您必須在發行集資料庫的發行者伺服器上執行預存程式。

  • sp_dropmergepullsubscription :您可以使用 sp_dropmergepullsubscription 系統預存程式卸除合併提取訂閱。 您必須在提取訂閱資料庫的訂閱者端執行預存程式。

卸除快照集訂閱

若要卸除快照式發行集所有發行項的發送訂閱,請在發行者端執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

若要將提取快照集訂閱卸除至快照式發行集的所有發行項,請遵循下列步驟:

  1. 在訂閱者端執行下列 SQL 文稿:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'
    
  2. 在發行者端執行下列文稿:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication=N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'all'
    

卸除交易式訂閱

若要卸除交易式發行集所有發行項的發送訂閱,請在 Publisher 上執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_dropsubscription @publication = N'<Publication name>', @article = N'all', @subscriber = N'all', @destination_db = N'all'

若要卸除交易式發行集所有發行項的提取訂閱,請遵循下列步驟:

  1. 在訂閱者端執行下列文稿:

    USE < **Subscription database name** >
    GO
    EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'
    
  2. 在發行者端執行下列文稿:

    USE < **Publication database name** >
    GO
    EXEC sp_dropsubscription @publication =N'<Publication name>', @subscriber = N'<Subscriber server name>', @article = N'all', @destination_db = N'<Destination database name>'
    

卸除合併訂閱

若要卸除發送訂閱,請在發行者端執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_dropmergesubscription @publication = N'<Publication name>', @subscriber = N'<Publisher server name>', @subscriber_db = N'<Subscription database name>', @subscription_type = N'push'

若要卸除提取訂用帳戶,請遵循下列步驟:

  1. 在訂閱者端執行下列文稿:

    USE < **Subscription database name** >
    GO
    EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'
    
  2. 在發行者端執行下列文稿:

    USE < **Publication database name** >
    GO
    EXEC sp_dropmergesubscription @subscription_type = N'pull', @publication = N'<Publication name>', @subscriber = N'<Subscriber server name>', @subscriber_db = N'<Subscription database name>'
    

卸除發行集

拿掉訂閱發行集的所有訂閱之後,您可以移除發行集。 移除發行集資料庫的發行集之後,必須將發行集資料庫的復寫資料庫選項設定為 false。 若要移除發行集,您可以使用下列系統預存程式:

  • sp_droppublication:您可以使用 sp_droppublication 系統預存程式卸除與發行集相關聯的發行集和發行項。 您必須在發行集資料庫的 Publisher 上執行預存程式。
  • sp_dropmergepublication:您可以使用sp_dropmergepublication系統預存程式卸除合併式發行集和與合併式發行集相關聯的 快照集代理程式。 也會卸除與發行集相關聯的發行項。 您必須在發行集資料庫的 Publisher 上執行預存程式。
  • sp_replicationdboption:您可以使用 sp_replicationdboption 系統預存程式來設定目前資料庫的複寫資料庫選項。 您必須在發行者伺服器上執行預存程式。

若要卸除快照式發行集,請在發行者端執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

若要卸除交易式發行集,請在 Publisher 上執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_droppublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

若要卸除合併式發行集,請在 Publisher 上執行下列腳本:

USE < **Publication database name** >
GO
EXEC sp_dropmergepublication @publication = N'<Publication name>'

USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value = N'false'

卸除散發者

卸除所有訂閱和發行集之後,您可以卸除相關的散發者。 不過,在您卸除散發者之前,您必須從 Publisher 卸除訂閱者指定。 若要這樣做,請使用下列預存程式:

  • sp_dropsubscriber:您可以使用 sp_dropsubscriber 系統預存程式,從已註冊的伺服器卸除訂閱者指定。 預存程式會移除訂閱者的登錄專案。 預存程式是在發行集資料庫的 Publisher 上執行。

  • sp_dropdistributor:您可以使用 sp_dropdistributor 系統預存程式來移除散發者。 預存程式是在散發者端執行。 若要從 Publisher 卸除訂閱者指定,請在 Publisher 上執行下列腳本:

    USE master
    GO
    EXEC sp_dropsubscriber @subscriber = N'<Subscriber server name>', @reserved = N'drop_subscriptions'
    

    若要移除散發者,請在散發者端執行下列腳本:

    USE master
    GO
    EXEC sp_dropdistributor @no_checks = 1
    

使用預存程序

當您移除複寫時,也可以使用下列預存程式:

  • sp_removedbreplication:您可以使用 sp_removedbreplication 系統預存程式,從資料庫中移除所有復寫物件,而不需更新散發者端的數據。 您必須在發行集資料庫或訂閱資料庫的訂閱者端,於發行者端執行預存程式。 以下是此預存程式的語法:

    sp_removedbreplication '<Database name>'
    
  • sp_droparticle:您可以使用 sp_droparticle 系統預存程式,從快照式發行集或交易式發行集卸除發行項。 如果已發佈發行項的一或多個訂閱仍然存在,您就無法移除發行項。 您必須在發行集資料庫的 Publisher 上執行預存程式。 以下是此預存程式的語法:

    sp_droparticle @publication = N'<Publication name>', @article = N'<Article name>', @force_invalidate_snapshot = 1
    

參考資料

如需詳細資訊,請參閱《SQL Server 在線叢書》中的下列主題: