1

トランザクションレプリケーショントポロジのノード間でデータを同期するRedGateSQLCompareを使用してプログラムを作成しています。ノードが3つ以上ある場合は、ツリー内のすべてのリンクを同期できるように、SQLインスタンス/データベース名のペアを自動で作成する方法が必要です。

この情報はディストリビューションデータベースに保存されていると思います。パブリケーションデータベースとサブスクリプションデータベース(MSsubscriptions)の名前を含むテーブルを見つけました。

ただし、publisher_idとsubscriber_idはフィールドとしてリストされていますが、それを使用してSQLインスタンスの名前を取得する方法がわかりません。

ディストリビューションデータベースのMSsubscriber_infoには、発行元のSQLインスタンス名が含まれていますが、ID列はありません。

出版物データベースと一致する出版社を入手する方法を知っている人はいますか?どなたでもアドバイスをいただければ幸いです。ありがとう。

4

1 に答える 1

2

お探しの情報はmaster.sys.servers

したがって、テーブルのMSsubscriptionsonから publisher_id とsubscriber_id を結合します。これは、あなたにとって良い出発点になるはずです (SQL Server 2005 以降を想定)。server_idservers

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 に答える