Sql-Server

無法打開數據庫。正在恢復中

  • May 13, 2020

我已經執行了這兩個命令:

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幫助,但正如您所見,它沒有。

編輯

更改NORECOVERYRECOVERY無濟於事,因為那時我無法執行第二個命令(拋出錯誤),並且我在特定時刻需要該日誌。

編輯

我找到了解決方案。你需要額外的命令:

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,並且只有在您應用包含目標時間的日誌備份時,數據庫才會執行恢復。

從文件:

恢復和停止選項。如果事務日誌備份不包含請求的時間(例如,如果指定的時間超出事務日誌所涵蓋的時間的結束時間),則會生成警告並且數據庫保持未恢復狀態。

將 SQL Server 數據庫還原到某個時間點(完整恢復模式)

出現此錯誤是因為您使用 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

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