Sql-Server

恢復無法啟動數據庫

  • April 2, 2015

伺服器“servername”的還原失敗。(Microsoft.SqlServer.SmoExtended)

System.Data.SqlClient.SqlError:RESTORE 無法啟動數據庫“ECP”。(Microsoft.SqlServer.Smo)

數據庫已創建,但無法使用對象資源管理器訪問:

無法訪問數據庫 ECP。(對象瀏覽器)

感謝您提供有關如何使數據庫正常工作的任何建議。

編輯:這個查詢

select state_desc from sys.databases where name = 'ECP';

返回RECOVERY_PENDING

我再次刪除了數據庫並重新嘗試了

restore verifyonly from disk = 'path\file';

這返回

嘗試還原此備份可能會遇到儲存空間問題。後續消息將提供詳細資訊。

“F:\ECPDATA1\ECPDATA1.mdf”指定的路徑不在有效目錄中。

文件“F:\ECPDATA2\ECPDATA2.ndf”的目錄查找失敗,出現作業系統錯誤 3(無法檢索此錯誤的文本。原因:15100)。

文件“F:\ECPDATA3\ECPDATA3.ndf”的目錄查找失敗,出現作業系統錯誤 3(無法檢索此錯誤的文本。原因:15105)。

文件“F:\ECPDATA4\ECPDATA4.ndf”的目錄查找失敗,出現作業系統錯誤 3(無法檢索此錯誤的文本。原因:15105)。

文件“E:\ECPLOG1\ECPLOG1.ldf”的目錄查找失敗,出現作業系統錯誤 21(無法檢索此錯誤的文本。原因:15105)。

文件 1 上的備份集有效。

既然它說備份集是有效的,我只需要指定文件,讓它工作,對吧?但是在這台伺服器上我沒有驅動器E:F:. 如何在備份文件中進行調整?還是有可能(我對 windows-server-2008-r2 不太熟悉)在 linux 上擁有某種符號連結?

您的還原失敗,因為您的電腦上沒有 E:\ 或 F:\。

  1. 執行RESTORE FILELISTONLY FROM DISK = 'path\file';- 這將告訴您數據和日誌文件的邏輯名稱。
  2. RESTORE DATABASE基於此構造一個命令。例如(假設數據文件名為ECP_Data,ECP_Data_2等):
RESTORE DATABASE ECO FROM DISK = 'path\file'
 WITH REPLACE, RECOVERY,
 MOVE 'ECP_Data'   TO 'C:\...path to MSSQL\Data\ECP_Data.mdf',
 MOVE 'ECP_Data_2' TO 'C:\...path to MSSQL\Data\ECP_Data2.ndf',
 MOVE 'ECP_Data_3' TO 'C:\...path to MSSQL\Data\ECP_Data3.ndf',
 MOVE 'ECP_Data_4' TO 'C:\...path to MSSQL\Data\ECP_Data4.ndf',
 MOVE 'ECP_Log'    TO 'C:\...path to MSSQL\Data\ECP_Log.ldf';

除了更正邏輯文件名之外,請替換為想要用於儲存數據/日誌文件的C:\...path to MSSQL\Data\任何路徑。您不需要每個文件都有一個單獨的文件夾,但您可能仍希望將數據和日誌文件分開到不同的磁碟上。請注意,如果您選擇的任何驅動器都沒有足夠的空間來執行還原,它仍然可能會失敗。

引用自:https://dba.stackexchange.com/questions/48405