SQL 2000、2005、および2008互換の形式でレプリケーションが有効になっているかどうかを確認する最も簡単な方法は何ですか?ステータス情報は必要ありません... DBに対して有効になっているかどうかを知るだけです。スキーマの更新を実行する前にレプリケーションが有効になっている場合、私のDb Migrationコードで例外をスローする必要があるため、これが必要です。レプリケーションが有効になっているかどうかを確認
ありがとうございました。
SQL 2000、2005、および2008互換の形式でレプリケーションが有効になっているかどうかを確認する最も簡単な方法は何ですか?ステータス情報は必要ありません... DBに対して有効になっているかどうかを知るだけです。スキーマの更新を実行する前にレプリケーションが有効になっている場合、私のDb Migrationコードで例外をスローする必要があるため、これが必要です。レプリケーションが有効になっているかどうかを確認
ありがとうございました。
MSDNは、「ユーザーデータベースがパブリッシャまたはサブスクライバとして構成されている場合、レプリケーションはシステムテーブルをデータベースに追加します。これらのテーブルは、レプリケーショントポロジからユーザーデータベースを削除すると削除されます」
資料に記載されているこれらのテーブルのいずれかがレプリケーションの証明として存在するかどうかを調べ、それに従ってクエリを進めることができます。
このクエリが見つかりましたが、これは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
: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
このステートメントにはFROM句はありません。 –
これが盗作であるかどうかはわかりません。 [ソース](http://www.mssqlinsider.com/2013/09/check-databases-part-replication/)(編集の場合) –
様々なヒューリスティックな方法がありますが、ない単にステータスの問い合わせ。さらに、レプリケーションはきめ細かく行うことができます。したがって、データベース内の一部のオブジェクトでは、レプリケーションを有効にすることができます。 –