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檔案?)
也無法查看資料庫屬性,
(反灰的)
連線到該台電腦查看相關路徑,
發現已經找不到資料庫的路徑囉。
雖然最後恢復失敗,
但仍紀錄一下解決流程,
或許哪天又遇到的時候,
又可以派上用場。