本文說明如何在 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 語句,手動移除複寫。 若要完全移除複寫,請遵循下列步驟:
- 卸除針對複寫設定的所有訂用帳戶。
- 卸除針對複寫設定的所有發行集。
- 卸除針對復寫設定的散發者。
注意
本文稍後會列出每種復寫類型的系統預存程式。 根據您想要移除的復寫類型,使用適當的預存程式。
卸除訂用帳戶
若要從 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'
若要將提取快照集訂閱卸除至快照式發行集的所有發行項,請遵循下列步驟:
在訂閱者端執行下列 SQL 文稿:
USE < **Subscription database name** > GO EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publication database name>', @publication = N'<Publication name>'在發行者端執行下列文稿:
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'
若要卸除交易式發行集所有發行項的提取訂閱,請遵循下列步驟:
在訂閱者端執行下列文稿:
USE < **Subscription database name** > GO EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>', @publication = N'<Publication name>'在發行者端執行下列文稿:
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'
若要卸除提取訂用帳戶,請遵循下列步驟:
在訂閱者端執行下列文稿:
USE < **Subscription database name** > GO EXEC sp_dropmergepullsubscription @publication = N'<Publication name>', @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher database name>'在發行者端執行下列文稿:
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 在線叢書》中的下列主題: