Sql-Server
無法打開數據庫。正在恢復中
我已經執行了這兩個命令:
USE master GO RESTORE DATABASE test FROM Kingston WITH NORECOVERY GO
USE master GO RESTORE LOG test FROM Kingston WITH STOPAT = '2020-05-13 14:05:25', RECOVERY; GO
但是現在我在訪問數據庫時遇到了這個錯誤
USE test GO
:無法打開數據庫“測試”。它正處於恢復過程中。
當它顯然不是。任何建議如何解決它?到目前為止發現這有
RECOVERY
幫助,但正如您所見,它沒有。編輯
更改
NORECOVERY
為RECOVERY
無濟於事,因為那時我無法執行第二個命令(拋出錯誤),並且我在特定時刻需要該日誌。編輯
我找到了解決方案。你需要額外的命令:
RESTORE DATABASE test WITH RECOVERY GO
似乎
RECOVERY
在命令中被忽略了RESTORE LOG
,它需要額外的命令來確認恢復已經完成。我很感激幫助。
這
USE master GO RESTORE LOG test FROM Kingston WITH STOPAT = '2020-05-13 14:05:25', RECOVERY;
如果 STOPAT 時間超出日誌備份的時間範圍,則不會執行恢復。這允許您為多個日誌備份指定 STOPAT,並且只有在您應用包含目標時間的日誌備份時,數據庫才會執行恢復。
從文件:
恢復和停止選項。如果事務日誌備份不包含請求的時間(例如,如果指定的時間超出事務日誌所涵蓋的時間的結束時間),則會生成警告並且數據庫保持未恢復狀態。
出現此錯誤是因為您使用 NORECOVERY 模式進行還原,並且不允許使用數據庫。現在您應該使用 WITH RECOVERY MODE 來恢復數據庫,以便您可以輕鬆訪問數據。
要糾正這個常見錯誤,您需要使用 WITH RECOVERY 選項。請按照以下步驟執行相同操作:
- 使用 RECOVERY 恢復數據庫的 T-SQL 腳本:
RESTORE DATABASE Databasename FROM DISK = 4'C:\databasename.BAK' WITH RECOVERY
- 從“正在恢復”狀態中恢復數據庫
如果數據庫處於還原狀態且使用者不可用,請執行命令使使用者可以訪問。
RESTORE DATABASE Databasename WITH RECOVERY
- 使用 WITH RECOVERY 選項還原多個備份
如果使用者有多個備份,除了最後一個,使用者可以使用 NORECOVERY 選項來恢復數據庫。但是對於最後一次備份,使用者必須使用 WITH RECOVERY 選項來恢復所有事務日誌並使數據庫聯機。
RESTORE DATABASE databasename FROM DISK = 'C:\Databasename.BAK' WITH NORECOVERY GO RESTORE LOG databasename FROM DISK = 'C:\Databasename.TRN' WITH RECOVERY GO