SQL Server 检查数据库状态为在线/离线

rwqw0loc  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(246)

我想检查一个数据库状态,我将使用pyodbc驱动程序连接到SQL Server数据库,并希望通过数据库名称作为参数,并看到响应为联机,脱机?任何帮助将不胜感激?
MS在线文档说它们会显示数据库状态-在sysdatabases表中。但是我检查了一下,它没有任何列。

nzk0hqpo

nzk0hqpo1#

sys.sysdatabases有一个列名称为status(和新的SQL Server版本,我认为列是STATE)。其中status以数值显示,
你可以使用下面的查询,它不包括所有的,但一些重要的数据库活动标志的。注意下面的Where子句,你可以传递数据库名称作为一个参数。

SELECT status as status_id,
    CASE 
    WHEN status = 1 THEN 'New'
    WHEN status = 32 THEN 'loading' 
    WHEN status = 64 THEN 'pre recovery' 
    WHEN status = 128 THEN 'recovering' 
    WHEN status = 256 THEN 'not recovered' 
    WHEN status = 512 THEN 'offline' 
    WHEN status = 1024 THEN 'read only' 
    WHEN status = 2048 THEN 'dbo use only' 
    WHEN status = 32768 THEN 'emergency mode' 
    WHEN status = 65536 THEN 'online' 
    WHEN status = 4194304 THEN 'autoshrink' 
    WHEN status = 1073741824 THEN 'cleanly shutdown' 
    ELSE 'None Provided' END AS 'Status_Values'
FROM sys.sysdatabases WHERE name = 'ENTER_DATABASE_IN_QUESTION_HERE'

相关问题