SQL資料庫出現復原暫止

SQL資料庫出現「復原暫止」問題

最近將一台許久沒動的SQL SERVER開啟,

檢查發現裡面的資料庫全都出現「復原暫止」

(↑災情蠻慘烈的...)​

 

其實網路上許多文章對於這個問題有很詳細的著墨,

不過還是紀錄一下,

未來有什麼問題,

還可以追尋自己的紀錄。

 

一般來說,

資料庫會出現「復原暫止」的狀況,

往往都是.LDF檔出現問題導致,

多半是可以透過手動修復完成,

程式碼如下

ALTER DATABASE [DBName] SET EMERGENCY; --  設成緊急模式

GO

ALTER DATABASE [DBName] set single_user

GO

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS; --  修復ldf檔

GO

ALTER DATABASE [DBName] set multi_user

GO

在執行上方T-SQL修復前,

可先透過sys.databases來看所有資料庫的狀態

SELECT name, state_desc from sys.databases

GO

 

其中"state_desc"欄位中有會有幾種狀態,

如下圖 : 

(參考連結 : https://docs.microsoft.com/zh-tw/sql/relational-databases/databases/database-states?view=sql-server-ver15)​

確認好之後,

接著執行手動修復。

但在執行的時候,

發生了問題。

(找不到.MDF檔案?)​

也無法查看資料庫屬性,

(反灰的)​

連線到該台電腦查看相關路徑,

發現已經找不到資料庫的路徑囉。

雖然最後恢復失敗,

但仍紀錄一下解決流程,

或許哪天又遇到的時候,

又可以派上用場。