如何從可疑模式中恢復 MS SQL 數據庫?

概括:閱讀這篇文章以找到恢復標記為可疑的 MS SQL 數據庫的解決方案。它描述了通過在 SQL Server Management Studio (SSMS) 中運行 Transact-SQL (T-SQL) 命令來解決“SQL 服務器可疑數據庫”問題的分步說明。此外,它還提供了使用 SQL 恢復工具恢復數據庫的替代解決方案。

當 SQL 數據庫進入可疑模式時,它變得不可訪問。在這種情況下,您將無法連接到數據庫,也無法在服務器啟動期間恢復它。

圖1:可疑模式下的數據庫

查看下面的信息圖,了解在 SQL Server 2008 及更高版本中從可疑模式恢復數據庫的快速解決方案。

內容

  • SQL 數據庫何時進入可疑模式?
  • 如何讓 SQL 數據庫脫離可疑模式?
  • 結論

SQL 數據庫何時進入可疑模式?

當 SQL Server 懷疑數據庫的主文件組損壞或數據庫文件丟失時,數據庫狀態設置為“懷疑”。

此外,還有多種錯誤可能導致 SQL 數據庫處於可疑模式。其中一些列舉如下:

  • 系統無法打開 SQL Server 的數據或日誌文件所在的設備。
  • SQL Server 在事務處理過程中崩潰或重新啟動,導致事務日誌文件損壞或無法訪問。
  • SQL Server 嘗試打開一個數據庫,而屬於該數據庫的文件已被系統上安裝的防病毒軟件打開。
  • 數據庫異常終止。
  • 磁盤空間不足。
  • SQL 無法完成回滾或前滾操作。
  • 數據庫文件被操作系統、第三方備份軟件等保存。

如何讓 SQL 數據庫脫離可疑模式?

筆記:您可以嘗試從眾所周知的備份中以可疑模式還原數據庫。如果備份不可用,請繼續執行以下步驟。

按照下面給出的順序步驟從可疑模式中恢復 MS SQL 數據庫:

第1步:OpenSSMS 並連接到數據庫。

圖 2:連接到數據庫

第2步:選擇新建查詢選項。

圖 3:選擇新查詢

第 3 步:在查詢編輯器窗口中,輸入以下代碼以關閉數據庫上的可疑標誌並將其設置為緊急:

執行 sp_resetstatus 'db_name'; ALTER DATABASE db_name SET EMERGENCY 圖 4:將數據庫設置為緊急模式

筆記:如果無法將數據庫設置為緊急模式,請跳至下一個解決方案。

第4步:可疑數據庫可能未損壞。您可以通過運行以下 DBCC CHECKDB 命令來確定數據庫是否已損壞。

DBCC CHECKDB(‘數據庫名稱’)

此語句將報告數據庫中的任何一致性錯誤(如果發現),並建議運行最低級別的修復選項來修復損壞。

在啟動修復過程之前,您必須首先將數據庫設置為“單用戶模式”。這樣做將防止其他用戶在修復過程中對數據庫進行任何更改。

圖 5:檢查數據庫一致性

第 5 步:現在,讓我們將數據庫帶入單用戶模式並通過執行以下命令回滾以前的事務:

ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE 圖 6:將數據庫設置為 Single_User 模式

第 6 步:對損壞的文件進行完整備份,以避免數據丟失。

第 7 步:將數據庫置於 SINGLE USER 模式後,嘗試使用 DBCC CHECKDB 的 REPAIR_REBUILD 選項修復一致性錯誤。此選項可以快速修復非聚集索引中丟失的行。此外,您可以將其用於更耗時的修復操作,例如重建索引。

DBCC CHECKDB (‘database_name’, REPAIR_REBUILD)

但是,如果建議將 REPAIR_ALLOW_DATA_LOSS 作為最低修復級別,則使用建議的修復選項運行 DBCC CHECKDB。語法如下:

DBCC CHECKDB (‘database_name’, REPAIR_ALLOW_DATA_LOSS) 圖 7:使用 DBCC CHECKDB 修復數據庫

第 8 步:將數據庫帶入多用戶模式:

ALTER DATABASE database_name SET MULTI_USER 圖 8:將數據庫設置為多用戶模式 ​​ALTER DATABASE database_name SET MULTI_USER

第 9 步:刷新數據庫服務器。

完成這些步驟後,您應該能夠連接到數據庫。如果有任何數據丟失,您將擁有要從中恢復的數據庫備份(第 6 步)。

如果這個解決方案不起作用怎麼辦?

如果您的服務器數據庫文件嚴重損壞,上述步驟可能無法恢復數據庫。此時,嘗試使用 Stellar Repair for MS SQL 來恢復數據庫。

該軟件可以修復由於數據庫處於可疑模式等原因而發生的常見 SQL 數據庫損壞錯誤。該軟件使用先進的算法來修復和恢復 SQL 數據庫從可疑模式到正常狀態(在線)。

如何使用 Stellar SQL 恢復工具從可疑模式中恢復 SQL 數據庫?

筆記:確保在運行 Stellar Repair for MS SQL 軟件之前關閉服務器實例。

第1步:下載、安裝和運行 Stellar Repair for MS SQL 軟件。

第2步:從“選擇數據庫”窗口中,選擇“瀏覽”或“搜索”以選擇可疑數據庫的 SQL 數據庫文件 (.mdf)。

圖 9:選擇數據庫文件

第 3 步:選擇文件後,點擊修復。

圖 10-修復選定的文件

筆記:如果您不想恢復已刪除的記錄,請務必取消選中“包括已刪除的記錄”複選框。

第4步:預覽可恢復的 SQL Server 數據庫對象的已修復 MDF 文件。

圖 11:預覽窗口

第 5 步:單擊文件菜單上的保存以保存修復的文件。

圖 12:文件菜單

第 6 步:在“保存數據庫”窗口中,執行以下操作:

  • 在另存為下選擇 MDF。
  • 將修復後的文件保存在新數據庫或實時數據庫中。
  • 在連接到服務器下填寫詳細信息。

圖 13:保存數據庫窗口

第 7 步:單擊保存。

打開 SSMS 並附加 db(包含修復的 MDF 文件)。您將能夠訪問數據庫。

軟件的附加功能

  • 修復損壞的 MDF 和 NDF 文件。
  • 恢復表、觸發器、鍵、索引、存儲過程、默認值、規則、模式等。
  • 支持 MS SQL 2019、2017、2016、2014、2012、2008 R2 及更低版本。
  • 提供多種保存選項來保存修復後的數據庫,包括 MS SQL (MDF)、CSV、HTML 和 XLS。

該軟件受到 Microsoft MVP 的信任

結論

這篇文章討論了“如何從可疑模式中恢復 MS SQL 數據庫”的方法。最好的方法是從健康的備份中恢復數據庫。如果您沒有備份,請使用緊急模式訪問數據庫並修復它。但是,當數據庫進入可疑模式時,您可能無法回滾處於活動狀態的事務。此外,使用 REPAIR_ALLOW_DATA_LOSS 選項作為最低修復級別可能會導致數據丟失。更好的選擇是使用專門的 SQL 數據庫修復軟件來幫助修復數據庫並將其從可疑狀態恢復到正常狀態。

留下评论