5

T-SQL を使用して、トランザクション レプリケーションのサブスクライバーでデータベースがサブスクライブされているかどうかを確認します。詳細について Distribution に問い合わせたくありません。

以下は動作しません。

SELECT is_subscribed FROM sys.databases

SELECT DATABASEPROPERTYEX('database', 'IsSubscribed')
4

3 に答える 3

9

これまでのところ、これが私が見つけた最良の方法ですが、これが非トランザクション レプリケーションで機能するかどうかはわかりません。

SELECT COALESCE(OBJECTPROPERTY(OBJECT_ID('dbo.MSreplication_objects'), 'IsMSShipped'),0) AS IsSubscribed

また

SELECT name
FROM sys.databases
WHERE OBJECT_ID(name+'.dbo.MSreplication_objects') IS NOT NULL
于 2013-06-05T21:13:17.527 に答える
0

上記のクエリは、ONLINE でないデータベースがない限り機能します。たとえば、RESTORING の場合、クエリは失敗します。使用可能なデータベースのリストを一時テーブルにコピーしてから、それに対してロジックを実行することをお勧めします。

IF OBJECT_ID('tempdb..#db') IS NOT NULL DROP TABLE #db
SELECT name INTO #db FROM sys.databases WHERE state_desc = 'ONLINE' 
SELECT name FROM #db WHERE OBJECT_ID(name+'.dbo.MSreplication_objects') IS NOT NULL
于 2018-08-10T18:46:00.203 に答える