所以,我的db可以有三种不同的状态。
我想通过查询知道当前数据库的状态。 你可以帮我吗 ? 我发现的是单一的
SELECT is_in_standby FROM sys.databases WHERE [name] = 'MyDb1'
如果MyDb1实际处于StandBy模式,我将给出以下内容:
is_in_standby ------------- 1
但是有没有办法确定MyDb1在NoRecovery模式?
所以,最后我find了一个解决scheme。 其实这是一种合并两个查询
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
你可以试试这个 –
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