Sql

如何通過查詢獲取 db 的目前恢復 mdoe 狀態?

  • July 26, 2017

所以,我的數據庫可以處於三種不同的狀態。

  • 恢復
  • NORECOVERY
  • 支持

我想通過查詢了解目前數據庫的狀態。你能幫助我嗎 ?我發現的單曲是

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

如果MyDb1實際上處於StandBy模式,我將給出以下內容:

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

MyDb1但是有沒有辦法在NoRecoverymode中確定呢?

所以,最後我找到了解決方案。實際上這是一種合併兩個查詢

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

引用自:https://serverfault.com/questions/865200