概括:本博客討論了“SQL Server 資料庫卡在恢復模式”問題背後的常見原因。此外,它還描述瞭如何排除故障和解決問題。如果恢復過程未能使資料庫聯機,請嘗試使用 SQL 恢復工具重新獲得對資料庫的訪問權限,而無需延長停機時間。
在 SQL 資料庫關閉、伺服器崩潰或資料庫損壞後重新啟動 SQL Server 或服務時,資料庫會自動進入“正在恢復”狀態。恢復過程完成後,資料庫變為聯機狀態。但是,如果資料庫的恢復時間過長,那麼了解資料庫為什麼會卡在恢復中很重要。
內容
- 是什麼導致 SQL Server 資料庫陷入恢復模式?
- 解決“恢復模式下的 SQL Server 資料庫”問題
- 修復 SQL Server 資料庫處於恢復模式問題的解決方案
- 結論
是什麼導致 SQL Server 資料庫陷入恢復模式?
您可以查看 SQL Server 錯誤日誌以了解資料庫卡在 RECOVERY 模式問題背後的原因。問題背後的常見原因包括:
- 您可能在啟用 NORECOVERY 選項的情況下從完整備份、差異備份和日誌備份還原資料庫,但在上次還原期間未指定 RECOVERY。
- 根據 MSDN,事務日誌可以在資料庫恢復時填充。SQL Server 會停止所有正在運行的事務,直到釋放日誌存儲空間,從而減慢資料庫恢復速度。事務日誌中的多個虛擬日誌文件 (VLF) 也會減慢恢復過程。
- 如果您的資料庫損壞或有某種損壞,恢復過程可能會停止。
解決“恢復模式下的 SQL Server 資料庫”問題
以下是解決 SQL Server 資料庫處於恢復模式問題的一些簡單故障排除提示:
技巧 1 – 使用 RECOVERY 恢復資料庫
筆記:運行“RESTORE with Recovery”將使資料庫再次執行相同的恢復步驟。如果您有一個大型資料庫,請避免使用此選項。
執行以下查詢以使您的資料庫重新聯機:
RESTORE DATABASE db_name WITH RECOVERY;
該查詢將回滾任何未提交的事務並使資料庫退出恢復模式。
提示 2 – 應用 Microsoft 修復
如果事務日誌中有太多 VLF,導致資料庫恢復緩慢,應用 Microsoft 修復可能會有所幫助。
技巧 3 – 運行 DBCC CHECKDB 以確定資料庫損壞
在有問題的資料庫上運行 DBCC CHECKDB。如果它報告一致性錯誤,您必須使用最低級別的修復選項修復資料庫。有關更多信息,請閱讀:https://www.stellarinfo.com/blog/how-to-repair-sql-database-using-dbcc-checkdb-command/
如果這些故障排除提示失敗,請嘗試使用下一節中討論的解決方案解決問題。
修復 SQL Server 資料庫處於恢復模式問題的解決方案
以下是可用於解決此問題的兩種解決方案:
解決方案 1 – 從最近的備份中恢復資料庫
筆記:如果備份已過時或損壞,請跳至下一個解決方案。
如果資料庫恢復過程似乎停滯了很長時間,請嘗試從更新的備份副本中恢復資料庫。為此,請按照下列步驟操作:
- 打開 SQL Server Management Studio (SSMS),右鍵單擊資料庫,然後單擊還原資料庫。
- 在 Source 部分下,選擇 Device 選項,然後單擊它旁邊的按鈕。
- 在打開的對話框中,按添加。
- 找到並選擇要恢復的備份文件 (.bak),然後按 OK。
- 再次單擊確定。
- 在“還原資料庫”屏幕中,輸入要還原的資料庫的名稱,然後單擊“確定”。
- 資料庫將被恢復。
筆記:恢復包含多個表的大型資料庫可能需要很長時間。
解決方案 2 – 使用專業的 SQL 資料庫恢復工具
如果備份不可用或者您想快速恢復資料庫,使用 SQL 恢復工具,例如 Stellar Repair for MS SQL 可能會有所幫助。該軟體修復 .mdf/.ndf 文件並將資料庫恢復到其原始形式。
觀看此視頻以了解該軟體的工作原理:
https://www.youtube.com/watch?v=yso4axqXxlMVideo 無法加載,因為 JavaScript 被禁用:如何使用 Stellar Repair for MS SQL 軟體修復和恢復損壞的 SQL 伺服器資料庫 (https://www.youtube.com/watch?v=yso4axqXxlM)
結論
本文討論的 SQL 資料庫卡在“正在恢復”狀態。它還概述了 SQL Server 資料庫處於恢復模式問題的常見原因以及解決該問題的故障排除技巧。如果這些技巧沒有幫助,實施解決方案可能有助於使資料庫處於一致狀態。當一切都無法恢復資料庫時,SQL 資料庫恢復工具可以派上用場。