发布和订阅的删除

SQL SERVER中复制的删除

以下方法均为 事务复制 --PUSH方式

1、删除单个的发布 : 复制-->  本地发布--> 右击--> 删除,如下图,然后再把对应的订阅服务器删除掉,或者等待执行:sp_MSdistribution_cleanup 的JOB(分发清除: distribution)默认订阅72小时失效之后自动删除。

2、删除全部的发布: 复制--> 右击 --> 禁用发布和分发,如下图,这个会同时的把分发服务器的配置清掉,需要重新配置的哦。。

其实只是执行了一个脚本

use [master]
exec sp_dropdistributor @no_checks = 1
GO
/*
[ @no_checks=] no_checks
指示在删除分发服务器之前是否检查有无依赖对象。no_checks 的数据类型为 bit,默认值为 0。
如果为 0,则 sp_dropdistributor 将执行检查,以确保除分发服务器以外的所有发布和分发对象都已删除。 
如果为 1,则 sp_dropdistributor 将在卸载分发服务器之前删除所有发布和分发对象。

[ @ignore_distributor=] ignore_distributor
指示是否在未连接到分发服务器的情况下执行此存储过程。ignore_distributor 的数据类型为 bit,默认值为 0。 
如果为 0,则 sp_dropdistributor 将连接到分发服务器,并删除所有复制对象。 如果 sp_dropdistributor 无法连接到分发服务器,则存储过程将失败。 
如果为 1,则不与分发服务器建立连接,并且不删除复制对象。 如果分发服务器正在卸载或持久脱机,才使用它。 直到分发服务器在未来某个时间重新安装之后,才会删除分发服务器中的该发布服务器的对象。
*/
--注意:
sp_dropdistributor 用于所有类型的复制。 

不过不是建议直接的界面操作。

3、对于某些时候可能删除不掉,这个时候可以直接trace一下,然后把进程杀掉

4、或者对于附加的数据库不注意可能会出现发布的错误,你也删除不掉。会报下面的错误。

无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。
已将数据库上下文更改为 'AdventureWorks2008'。 (Microsoft SQL Server,错误: 15517)

这个时候可以查一下数据库属性->文件->所有者如果没有话,填个sa再试一次就可以。

原文地址:https://www.cnblogs.com/zerocc/p/3200714.html