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再试一次就可以。