检查是否启用复制
检查是否以SQL 2000,2005和2008兼容格式启用复制的最简单方法是什么?不需要任何状态信息...只是为了知道它是否为数据库启用。我需要这个,因为我希望我的Db Migration代码在尝试执行模式更新之前启用复制时引发异常。检查是否启用复制
谢谢。
在看这篇文章,MSDN说:“当一个用户数据库被配置为发布者或订阅服务器,复制增加了系统表到数据库中。当用户数据库是从复制拓扑中删除这些表中移除的”
您可以查找文章中列出的其中一个表作为复制证明,并相应地继续查询。
我发现了这个查询,但这只适用于SQL 2005及更高版本(不适用于SQL 2000 verson)。
T-SQL查询
select name, is_published, is_subscribed, is_merge_published, is_distributor
from sys.databases
where is_published = 1 or is_subscribed = 1 or
is_merge_published = 1 or is_distributor = 1
来源:www.mssqlinsider.com/2013/09/check-databases-part-replication:
SELECT
name as [Database name],
CASE is_published
WHEN 0 THEN 'No'
ELSE 'Yes'
END AS [Is Published],
CASE is_merge_published
WHEN 0 THEN 'No'
ELSE 'Yes'
END AS [Is Merge Published],
CASE is_distributor
WHEN 0 THEN 'No'
ELSE 'Yes'
END AS [Is Distributor],
CASE is_subscribed
WHEN 0 THEN 'No'
ELSE 'Yes'
END AS [Is Subscribed]
FROM sys.databases
WHERE database_id > 4
该声明没有FROM子句。 –
不确定这是否被视为剽窃。 [来源](http://www.mssqlinsider.com/2013/09/check-databases-part-replication/)(在编辑的情况下) –
有各种启发式方法,但没有简单的状态查询。另外,复制可以非常精细,因此可以在数据库中的某些对象上启用它,而这些对象无论如何都不会修改。 –