[筆記]查詢資料庫目前是否 Onlin 狀態 sp_helpdb & sys.databases

  • 3833
  • 0

[筆記]查詢資料庫目前是否 Onlin 狀態 sp_helpdb & sys.databases

參考這篇 SQL錯訊一問 " 資料庫 'ABC' 正在復原。請等候復原完成 

查詢資料庫目前狀態可以使用 sp_helpdb 或是 sys.databases 。

 

當在 pubs 資料庫線上時,查詢效果如下:


sp_helpdb pubs 


SELECT state,state_desc ,* FROM sys.databases  
WHERE name = 'pubs'

 

image 

 

當在 pubs 資料庫離線時,查詢效果如下:

image

 

 

sp_helpdb : 查詢回傳的 status 欄位是否為空

sys.databases : 查詢 state 欄位是否為 0 . (狀態值參考 這篇 )

但sys.databases  資料庫狀態   ONLINE 資料庫可供存取,主要檔案群組是在線上,雖然可能尚未完成復原的恢復階段。

 

 

結論:

單純查詢資料庫是否Online 則兩個方法都可以使用,若考量到恢復的問題,則要使用 sp_helpdb 方式。

 

 

參考:

SQL錯訊一問 " 資料庫 'ABC' 正在復原。請等候復原完成 

資料庫狀態

sys.databases (Transact-SQL)
包含 Microsoft SQL Server 的執行個體中每個資料庫各一列。

 

sp_helpdb (Transact-SQL)
報告指定的資料庫或所有資料庫的相關資訊。