我需要知道如何查询Microsoft SQL Server,以查看特定数据库是否已设置为只读(Read-Only)
。
是否可以使用T-SQL来实现?
我需要知道如何查询Microsoft SQL Server,以查看特定数据库是否已设置为只读(Read-Only)
。
是否可以使用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
来检查数据库的只读属性,仅当数据库被明确设为只读模式时才会提供正确的信息。
对于处于被动服务器(例如AlwaysOn技术的Secondary服务器)中的数据库,即使这些数据库不可写入,它们在 sys.databases
中的只读模式仍将设置为 False(0)
。
因此,建议使用以下语句检查数据库的只读模式:
SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
我试图使用p.campbell的答案来检查我的Azure SQL数据库是主数据库还是只读副本-但它没有生效。主数据库和副本都在"is_read_only"字段上返回了0。
这是对我有用的方法:
SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
以上的select语句返回字符串'READ_ONLY'或'READ_WRITE'。
EXEC sp_dboption "AdventureWorks", "read only"
样例输出
OptionName CurrentSetting
read only OFF
SELECT name, user_access_desc, is_read_only, state_desc, recovery_model_desc
FROM sys.databases;
您可以快速确定下一步操作。
SELECT @@SERVERNAME AS ServerName, DATABASEPROPERTYEX('(databasename)', 'Updateability') AS Status;
- AjV Jsy