我正在编写一个使用RedGate SQL Compare的程序,它在事务复制拓扑中的节点之间同步数据。如果节点数超过2个,我需要一种自动创建SQL实例/数据库名称配对的方法,以便我可以同步树中的所有链接。
我相信这些信息存储在分发数据库中。我找到了包含发布数据库和订阅数据库(MSsubscriptions)名称的表。
但是,虽然publisher_id和subscriber_id被列为字段,但我不知道如何使用它来获取SQL实例的名称。
分发数据库中的MSsubscriber_info包含发布者的SQL实例名称,但没有ID列。
有谁知道我如何获得与出版物数据库匹配的出版商?我很感激任何人都可以给予的建议。感谢。
答案 0 :(得分:2)
您要查找的信息位于master.sys.servers
因此,您要加入MSsubscriptions
表格中server_id
上servers
的publisher_id和subscriber_id。这应该是一个很好的起点(假设SQL Server 2005或更高版本)
select distinct pub.name, sub.name
from master.sys.servers pub
join distribution.dbo.MSsubscriptions s
on s.publisher_id = pub.server_id
join master.sys.servers sub
on s.subscriber_id = sub.server_id;