如何删除发布(复制 Transact-SQL 编程)
可以使用复制存储过程以编程的方式删除发布。 使用的存储过程取决于要删除的发布的类型。
注意 |
---|
删除发布并不会删除发布数据库中的已发布对象,也不会删除订阅数据库中的相应对象。 如有必要,使用 DROP <object> 命令手动删除这些对象。 |
删除快照发布或事务发布
执行以下操作之一:
若要删除单个发布,请在发布服务器上,对发布数据库执行 sp_droppublication。
若要删除发布数据库中的所有发布并删除其中的所有复制对象,请在发布服务器上执行 sp_removedbreplication。 为 @type 指定 tran 值。 (可选)如果无法访问分发服务器,或者数据库的状态为可疑或脱机,则将 @force 的值指定为 1。 (可选)如果未对发布数据库执行 sp_removedbreplication,则为 @dbname 指定数据库的名称。
注意 将 @force 的值指定为 1 可能会使与复制相关的发布对象保留在数据库中。
(可选)如果此数据库中没有任何其他发布,则执行sp_replicationdboption (Transact-SQL)操作以禁用使用快照复制或事务复制的当前数据库的发布。
(可选)在订阅服务器上,对订阅数据库执行 sp_subscription_cleanup 以删除订阅数据库中的任何剩余复制元数据。
删除合并发布
执行以下操作之一:
若要删除单个发布,请在发布服务器上,对发布数据库执行 sp_dropmergepublication (Transact-SQL)。
若要删除发布数据库中的所有发布并删除其中的所有复制对象,请在发布服务器上执行 sp_removedbreplication。 为 @type 指定 merge 值。 (可选)如果无法访问分发服务器,或者数据库的状态为可疑或脱机,则将 @force 的值指定为 1。 (可选)如果未对发布数据库执行 sp_removedbreplication,则为 @dbname 指定数据库的名称。
注意 将 @force 的值指定为 1 可能会使与复制相关的发布对象保留在数据库中。
(可选)如果此数据库中没有任何其他发布,则执行 sp_replicationdboption (Transact-SQL) 以禁用使用合并复制的当前数据库的发布。
(可选)在订阅服务器上,对订阅数据库执行 sp_mergesubscription_cleanup (Transact-SQL) 以删除订阅数据库中的任何剩余复制元数据。
示例
该示例演示如何删除事务发布并禁用数据库的事务发布。 该示例假定以前删除了所有订阅。 有关详细信息,请参阅如何删除请求订阅(复制 Transact-SQL 编程)或如何删除推送订阅(复制 Transact-SQL 编程)。
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksProductTran';
-- Remove a transactional publication.
USE [AdventureWorks]
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'AdventureWorks'
-- Remove the merge publication.
USE [AdventureWorks]
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