如何通过查询获取数据库当前的恢复模式状态?

如何通过查询获取数据库当前的恢复模式状态?

所以,我的数据库可以处于三种不同的状态。

  • 恢复
  • 无法恢复
  • 支持

我想通过查询了解当前数据库的状态。你能帮我吗?我找到的唯一答案是

SELECT is_in_standby
     FROM sys.databases
WHERE [name] = 'MyDb1'

如果MyDb1实际上处于StandBy模式,我将给出以下内容:

is_in_standby
-------------
1

但是有没有办法MyDb1NoRecovery模式中确定这一点?

答案1

所以,我终于找到了一个解决方案。实际上,这是一种合并两个查询的方法

SELECT 
    case
        when is_in_standby = 1 then N'YES'
        else 'NO'
    END as STANDBY
    , DATABASEPROPERTYEX ('MyDb1', 'Status') STATUS
FROM sys.databases
WHERE [name] = 'MyDb1'

结果

STANDBY STATUS
------- ------
YES     ONLINE

答案2

你可以尝试这个 -

SELECT rhistory.destination_database_name,rhistory.restore_date,
rhistory.destination_database_name,rhistory.user_name,
CASE 
WHEN rhistory.[recovery] = 0 THEN 'NoRecovery' 
WHEN sysdb.[is_in_standby] = 1 THEN 'StandBy'
ELSE 'Recovery' END AS Recovery_State
FROM msdb..restorehistory rhistory
INNER JOIN sys.databases sysdb ON sysdb.name=rhistory.destination_database_name
ORDER BY rhistory.restore_date DESC

相关内容