T-SQL を使用して、トランザクション レプリケーションのサブスクライバーでデータベースがサブスクライブされているかどうかを確認します。詳細について Distribution に問い合わせたくありません。
以下は動作しません。
SELECT is_subscribed FROM sys.databases
SELECT DATABASEPROPERTYEX('database', 'IsSubscribed')
T-SQL を使用して、トランザクション レプリケーションのサブスクライバーでデータベースがサブスクライブされているかどうかを確認します。詳細について Distribution に問い合わせたくありません。
以下は動作しません。
SELECT is_subscribed FROM sys.databases
SELECT DATABASEPROPERTYEX('database', 'IsSubscribed')
これまでのところ、これが私が見つけた最良の方法ですが、これが非トランザクション レプリケーションで機能するかどうかはわかりません。
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
上記のクエリは、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