2011-11-08 14 views
1

SQL 2000、2005、および2008互換の形式でレプリケーションが有効になっているかどうかを確認する最も簡単な方法は何ですか?ステータス情報は必要ありません... DBに対して有効になっているかどうかを知るだけです。スキーマの更新を実行する前にレプリケーションが有効になっている場合、私のDb Migrationコードで例外をスローする必要があるため、これが必要です。レプリケーションが有効になっているかどうかを確認

ありがとうございました。

+0

様々なヒューリスティックな方法がありますが、ない単にステータスの問い合わせ。さらに、レプリケーションはきめ細かく行うことができます。したがって、データベース内の一部のオブジェクトでは、レプリケーションを有効にすることができます。 –

答えて

0

MSDNは、「ユーザーデータベースがパブリッシャまたはサブスクライバとして構成されている場合、レプリケーションはシステムテーブルをデータベースに追加します。これらのテーブルは、レプリケーショントポロジからユーザーデータベースを削除すると削除されます」

資料に記載されているこれらのテーブルのいずれかがレプリケーションの証明として存在するかどうかを調べ、それに従ってクエリを進めることができます。

4

このクエリが見つかりましたが、これはSQL 2005以降のバージョン(SQL 2000 Versonでは使用できません)でのみ機能します。

から、T-SQLクエリ

select name, is_published, is_subscribed, is_merge_published, is_distributor 
    from sys.databases 
    where is_published = 1 or is_subscribed = 1 or 
    is_merge_published = 1 or is_distributor = 1 
0

www.mssqlinsider.com/2013/09/check-databases-part-replication

SELECT 
    name as [Database name], 
    CASE is_published 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Published], 
    CASE is_merge_published 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Merge Published], 
    CASE is_distributor 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Distributor], 
    CASE is_subscribed 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Subscribed] 
FROM sys.databases 
WHERE database_id > 4 
+0

このステートメントにはFROM句はありません。 –

+0

これが盗作であるかどうかはわかりません。 [ソース](http://www.mssqlinsider.com/2013/09/check-databases-part-replication/)(編集の場合) –