以前总结过一遍博文SQL Server删除distribution数据库,里面介绍了如何删除distribution数据库。今天介绍一个删除distribution的特殊案例,
在这之前,我不知道这个服务器上的Replication被如何折腾过,在SSMS管理界面的Local Publications和Local Subscriptions里面已经看不到任何关于发布、订阅相关的内容。
但是使用命令EXEC sp_helpdistpublisher会看到使用分发服务器的发布服务器的属性
下面SQL的参数@publisher对应上面name的值,此处用xxxx替代
USE master;
GO
exec sp_dropdistpublisher @publisher = 'xxxx'
我们通过下面SQL,发现其在数据库(暂且用A表示)A上面做过发布,
执行下面SQL时,报错误,因为这个数据库上有一个数据库级别的触发器safety,禁止任何DDL操作,首先禁用这个触发器后,执行下面SQL,就会将下面截图部分触发器全部清理。
USE master;
go
EXEC sp_removedbreplication 'A'
然后按照SQL Server删除distribution数据库里面步骤,依葫芦画瓢,执行下面SQL,就能轻轻松松的将distribution数据库删除。
USE ArtDB;
GO
exec sp_dropdistpublisher @publisher = 'xxx'
USE master;
GO
exec sp_dropdistributiondb @database = N'distribution'
GO