Sql
如何通過查詢獲取 db 的目前恢復 mdoe 狀態?
所以,我的數據庫可以處於三種不同的狀態。
- 恢復
- NORECOVERY
- 支持
我想通過查詢了解目前數據庫的狀態。你能幫助我嗎 ?我發現的單曲是
SELECT is_in_standby FROM sys.databases WHERE [name] = 'MyDb1'
如果
MyDb1
實際上處於StandBy
模式,我將給出以下內容:is_in_standby ------------- 1
MyDb1
但是有沒有辦法在NoRecovery
mode中確定呢?
所以,最後我找到了解決方案。實際上這是一種合併兩個查詢
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