所以,我的数据库可以处于三种不同的状态。
- 恢复
- 无法恢复
- 支持
我想通过查询了解当前数据库的状态。你能帮我吗?我找到的唯一答案是
SELECT is_in_standby
FROM sys.databases
WHERE [name] = 'MyDb1'
如果MyDb1
实际上处于StandBy
模式,我将给出以下内容:
is_in_standby
-------------
1
但是有没有办法MyDb1
在NoRecovery
模式中确定这一点?
答案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