如何在分发数据库中查找发布者和订阅者的实例名称

时间:2012-06-22 20:53:14

标签: sql-server replication

我正在编写一个使用RedGate SQL Compare的程序,它在事务复制拓扑中的节点之间同步数据。如果节点数超过2个,我需要一种自动创建SQL实例/数据库名称配对的方法,以便我可以同步树中的所有链接。

我相信这些信息存储在分发数据库中。我找到了包含发布数据库和订阅数据库(MSsubscriptions)名称的表。

但是,虽然publisher_id和subscriber_id被列为字段,但我不知道如何使用它来获取SQL实例的名称。

分发数据库中的MSsubscriber_info包含发布者的SQL实例名称,但没有ID列。

有谁知道我如何获得与出版物数据库匹配的出版商?我很感激任何人都可以给予的建议。感谢。

1 个答案:

答案 0 :(得分:2)

您要查找的信息位于master.sys.servers

因此,您要加入MSsubscriptions表格中server_idservers的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;