How to detect a SQL Server database's read-only status using T-SQL?

后端 未结 4 1038
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-01 09:36

I need to know how to interrogate a Microsoft SQL Server, to see if a given database has been set to Read-Only or not.

Is that possible, using T-SQL?

相关标签:
4条回答
  • 2021-01-01 10:02

    I was trying to use the p.campbell's answer to check if my Azure SQL DB is the primary one or the read only replica - it didn't work. Both the primary DB and the replica returned had 0 on the is_read_only field.

    Here's what worked for me:

    SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability'); 
    

    the above select statement returns string 'READ_ONLY' or 'READ_WRITE'.

    0 讨论(0)
  • 2021-01-01 10:21

    Querying sys.databases for checking a DB's Read-Only property will only give the right information if the database has been explicitly set to Read-Only mode.

    For databases that are in the passive servers (e.g. in AlwaysOn technology Secondary Servers), even though the databases cannot be written into, their Read-Only mode in sys.databases would still be set as False(0).

    Hence, it is advisable to check the Read-Only mode of databases using the statement:

    SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
    
    0 讨论(0)
  • 2021-01-01 10:22

    Here is a command to display or set this property.

    EXEC sp_dboption "AdventureWorks", "read only"
    

    Sample output

    OptionName CurrentSetting    
    read only OFF
    
    0 讨论(0)
  • 2021-01-01 10:28

    The information is stored in 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.
    
    0 讨论(0)
提交回复
热议问题