1

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

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

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

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

有谁知道我如何获得与出版物数据库匹配的出版商?我将不胜感激任何人可以提供的任何建议。谢谢。

4

1 回答 1

2

您要查找的信息在master.sys.servers

因此,您将从表中的开头加入 publisher_idMSsubscriptionsserver_idsubscriber_id servers。这对您来说应该是一个很好的起点(假设 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;
于 2012-06-22T21:04:41.757 回答