特定のデータベースがRead-Only
に設定されているかどうかを確認するために、Microsoft SQL Serverに問い合わせる方法を知る必要があります。
T-SQLを使用してそれは可能ですか?
情報はsys.databases
に保存されます。
SELECT name, is_read_only
FROM sys.databases
WHERE name = 'MyDBNAme'
GO
--returns 1 in is_read_only when database is set to read-only mode.
データベースの読み取り専用プロパティをチェックするために_sys.databases
_をクエリすると、onlyデータベースがexplicitlyの場合に正しい情報が得られます読み取り専用モードに設定します。
パッシブサーバー(AlwaysOnテクノロジーセカンダリサーバーなど)にあるデータベースの場合、データベースに書き込むことはできませんが、_sys.databases
_の読み取り専用モードはFalse(0)
として設定されます。
したがって、次のステートメントを使用して、データベースの読み取り専用モードを確認することをお勧めします。
_SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
_
このプロパティを表示または設定するための command を次に示します。
EXEC sp_dboption "AdventureWorks", "read only"
出力例
OptionName CurrentSetting
read only OFF
私は、p.campbellの回答を使用して、Azure SQL DBがプライマリデータベースであるか、読み取り専用レプリカであるかを確認しようとしましたが、機能しませんでした。プライマリDBと返されたレプリカの両方のis_read_onlyフィールドに0がありました。
これが私のために働いたものです:
SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
上記の選択ステートメントは、文字列「READ_ONLY」または「READ_WRITE」を返します。