如何通过查询获取db的当前还原mdoe状态?

所以,我的db可以有三种不同的状态。

  • 复苏
  • NORECOVERY
  • 支持

我想通过查询知道当前数据库的状态。 你可以帮我吗 ? 我发现的是单一的

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

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

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

但是有没有办法确定MyDb1NoRecovery模式?

所以,最后我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