[錯誤解決] SQL 數據庫還原失敗,數據庫正在使用中

概括:本博客將介紹修復“SQL 數據庫恢復失敗,數據庫正在使用”錯誤的解決方案。這些解決方案包括斷開與數據庫的活動連接(用戶和進程),以及使用 Stellar Toolkit for MS SQL 軟件從損壞的數據庫或備份 (.bak) 文件中恢復 SQL 數據庫 (db)。該解決方案適用於 MS SQL Server 2019、2017、2016、2014 及更低版本。

嘗試從備份還原 SQL Server 數據庫時,通常會收到如下錯誤消息:

服務器“xxx”(Microsoft.SqlServer.SmoExtended)恢復失敗

附加信息:System.Data.SqlClient.SqlError:無法獲得獨占訪問權限,因為數據庫正在使用中。

圖1:SQL 數據庫還原失敗錯誤消息

內容

  • “SQL 數據庫還原失敗,數據庫正在使用”錯誤背後的原因
  • 在我們開始之前
  • 如何解決“無法恢復 SQL 數據庫,因為它正在使用”的問題?
  • 如果問題仍然存在怎麼辦?
  • 結論

“SQL 數據庫還原失敗,數據庫正在使用”錯誤背後的原因

以下是一些可能干擾恢復過程並引發“數據庫恢復失敗,因為數據庫正在使用”錯誤的原因:

  • 您已連接到要還原的數據庫。
  • 在使用 SQL Server Management Studio (SSMS) 進行數據庫還原時,您會在其中打開多個窗口。
  • 其他用戶連接到主數據庫。

現在,我們將討論修復錯誤的解決方案。

提示:SQL Server 數據庫可以從備份 (.bak) 文件中恢復。但是,如果 .bak 文件損壞,數據庫還原操作可能會失敗。使用 Stellar Toolkit for MS SQL 軟件,該軟件附帶高效的 SQL 備份提取器工具,旨在幫助數據庫管理員從損壞的備份 (.BAK) 文件中恢復 SQL 數據庫。該軟件支持 SQL Server 2019、2017、2016、2014、2012 和舊版本。

在我們開始之前

在繼續解決錯誤之前 – 由於數據庫正在使用,無法獲得獨占訪問權限,請確保滿足以下先決條件:

  • 任何版本的 SQL Server 都必須安裝在您的系統上。
  • 您需要在計算機上安裝 SQL Server Management Studio (SSMS)。

如何解決“無法恢復 SQL 數據庫,因為它正在使用”的問題?

嘗試還原 SQL Server db 時,請確保沒有活動連接。如果有人正在使用數據庫,則還原操作將失敗。要解決此問題,您需要斷開活動用戶的連接。您可以通過以下任何一種方法來執行此操作:

筆記:在斷開用戶連接之前,使用 SQL 存儲過程“sp_who”檢查當前使用數據庫的所有用戶。如果您發現用戶執行某些重要任務,請在斷開連接之前通知這些用戶。有關 sp_who 的詳細信息,請參閱此鏈接。如果您不想通知用戶,請跳至方法 2。

方法 1 – 關閉與數據庫的現有連接

要關閉與 SQL db 的現有連接,請執行以下步驟:

第1步:打開 SSMS 並連接到數據庫。

第2步:連接到數據庫後,對象資源管理器面板將出現在 SSMS 窗口的左側。

第 3 步:在對象資源管理器面板中,右鍵單擊數據庫,然後選擇還原數據庫。

圖 2:恢復數據庫

第4步:在“還原數據庫”對話框中,執行以下操作:

  • 選擇要還原的數據庫之一。
  • 在左側面板中,單擊選項。

第 5 步:在選項頁面中,選中標記為“關閉與目標數據庫的現有連接”的複選框。

圖 3:關閉現有連接

SQL Server 連接關閉後,繼續進行還原操作。

方法 2 – 從多用戶模式更改為單用戶模式

將默認的多用戶模式更改為單用戶模式將斷開所有連接的用戶。如果您想在不通知他們的情況下斷開所有用戶的連接,可以使用此選項。

要強制用戶從 SQL Server 下線(即斷開連接),請按照以下步驟將數據庫從多用戶模式設置為單用戶模式:

第1步:打開SSMS,連接數據庫。

第2步:在對象資源管理器窗口中,選擇新建查詢。將以下 T-SQL 代碼片段複製並粘貼到查詢窗口中,然後單擊執行:

使用大師; GO ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;去圖4:SSMS 查詢編輯器

執行上述代碼會將數據庫更改為單用戶模式。

方法 3 – 重新啟動 SQL Server 服務

您還可以通過重新啟動 SQL 服務來斷開用戶的連接。您可以使用 SQL Server 配置管理器、SSMS、服務控制台或命令行重新啟動服務。

筆記:將此方法用作最後的手段。那是因為,您可能只需要恢復單個數據庫,但重新啟動服務器會終止與所有數據庫的連接。

從 SQL Server 配置管理器重新啟動服務的步驟如下:

第1步:使用以下任一路徑瀏覽 SQL Server 配置管理器:

SQL Server 2019 C:\Windows\SysWOW64\SQLServerManager15.msc

SQL Server 2017 C:\Windows\SysWOW64\SQLServerManager14.msc

SQL Server 2016 C:\Windows\SysWOW64\SQLServerManager13.msc

SQL Server 2014 C:\Windows\SysWOW64\SQLServerManager12.msc

SQL Server 2012 C:\Windows\SysWOW64\SQLServerManager11.msc

第2步:在 SQL Server 配置管理器窗口的左窗格中,單擊 SQL Server 服務。在右窗格中,右鍵單擊 SQL Server 服務,然後停止並啟動它。

第 3 步:單擊“確定”退出 SQL Server 配置管理器。

圖 5:SQL Server 配置管理器窗口

如果問題仍然存在怎麼辦?

如果問題仍然存在,則可能是您的數據庫存在問題,或者用於恢復數據庫的備份文件已損壞。在這種情況下,請使用 Stellar Toolkit for MS SQL。該軟件可以從損壞的 SQL Server 中恢復 db。它還可以從損壞的備份 (.bak) 文件中提取需要恢復的數據庫。

Stellar Toolkit for MS SQL 軟件還可以幫助您重置丟失或忘記的 SQL Server 管理員和用戶密碼。您可以從此處閱讀 MVP 所做的軟件評論。

要使用該軟件從損壞的 SQL Server 備份 (.bak) 文件中恢復數據庫,請執行以下步驟:

第1步:下載、安裝和啟動 Stellar Toolkit for MS SQL 軟件。

第2步:在軟件的用戶界面中,選擇從 MS SQL 備份中提取。

第 3 步:在 Stellar Backup Extractor for MS SQL 窗口中,單擊選擇文件以選擇 .bak 文件。

圖 6:選擇備份 (.bak) 文件

筆記:如果您不知道文件位置,請選擇“在文件夾中搜索”選項。

第4步:選擇 .bak 文件後,單擊掃描。

第 5 步:BackupSet 窗口出現,其中包含所有備份的詳細信息。

圖 7:可用備份列表

第 6 步:從“備份類型”列表中選擇要恢復的 .bak 文件,然後單擊“下一步”繼續掃描過程。

第 7 步:掃描完成後,會出現一個對話框,顯示備份文件中可用的總記錄數。

第 8 步:該軟件顯示數據庫記錄的預覽。

第 9 步:要保存恢復的 .bak 文件,請單擊文件菜單上的保存。

第 10 步:在彈出的窗口中,選擇“另存為”下的“MSSQL”,然後單擊“瀏覽”選擇保存恢復文件的位置。單擊確定。

圖 8:備份文件保存格式

第 11 步:在保存選項下選擇新建數據庫或實時數據庫。接下來,在連接到服務器部分指定所需的詳細信息,然後單擊連接。

圖 9:備份文件保存選項

第 12 步:出現“恢復過程成功完成”消息時單擊確定。

圖 10 – 恢復完成消息框

恢復的文件將保存在選定的位置。

您可以從這裡觀看完整的視頻:

結論

該博客解釋瞭如何修復 SQL 數據庫恢復失敗,數據庫正在使用的問題。您可以通過關閉現有連接或從多用戶模式更改為單用戶模式來斷開活動用戶。或者,通過重新啟動 SQL Server 服務來斷開所有用戶的連接。但是,如果您在恢復數據庫時仍然遇到問題,Stellar SQL Database Toolkit 可以派上用場。它通過修復損壞的 SQL 數據庫或恢復 SQL Server 備份文件來幫助解決問題。

留下评论