无法打开数据库。正在恢复中

5 sql-server t-sql recovery

我已经执行了这两个命令:

USE master
GO

RESTORE DATABASE test
FROM Kingston
WITH NORECOVERY
GO
Run Code Online (Sandbox Code Playgroud)
USE master
GO
RESTORE LOG test
FROM Kingston
WITH STOPAT = '2020-05-13 14:05:25', RECOVERY;
GO
Run Code Online (Sandbox Code Playgroud)

但现在我在访问数据库时遇到此错误USE test GO

无法打开数据库“测试”。它正处于恢复过程中。

当它显然不是的时候。有什么建议如何修复它吗?到目前为止发现这RECOVERY有帮助,但正如你所看到的,它没有帮助。

编辑

更改NORECOVERYRECOVERY没有帮助,因为这样我无法执行第二个命令(引发错误),并且我在特定时刻需要该日志。

编辑

我已经找到了解决方案。您需要额外的命令:

RESTORE DATABASE test
WITH RECOVERY
GO
Run Code Online (Sandbox Code Playgroud)

似乎RECOVERY在命令中被忽略RESTORE LOG,并且需要额外的命令来确认恢复已完成。不过我很感激你的帮助。

小智 2

出现此错误是因为您使用NORECOVERY模式进行恢复,并且不允许使用数据库。现在您应该使用WITH RECOVERY MODE 来恢复数据库,以便您可以轻松访问数据。

\n\n

要纠正此常见错误,您需要使用WITH RECOVERY 选项。请按照以下步骤执行相同操作:

\n\n

- 用于通过恢复恢复数据库的 T-SQL 脚本:

\n\n
RESTORE DATABASE Databasename FROM DISK = 4'C:\\databasename.BAK'\n\nWITH RECOVERY\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 从 \xe2\x80\x98Restoring\xe2\x80\x99 状态恢复数据库
  • \n
\n\n

如果数据库处于恢复状态且用户无法访问,请执行以下命令将数据库恢复为可供用户访问。

\n\n
RESTORE DATABASE Databasename WITH RECOVERY\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 使用WITH RECOVERY选项恢复多个备份
  • \n
\n\n

如果用户有多个备份(最后一个除外),则用户可以使用 NORECOVERY 选项来恢复数据库。但对于最后一次备份,用户必须使用WITH RECOVERY选项来恢复所有事务日志并使数据库联机。

\n\n
RESTORE DATABASE databasename FROM DISK = 'C:\\Databasename.BAK'\n\nWITH NORECOVERY\n\nGO\n\nRESTORE LOG databasename FROM DISK = 'C:\\Databasename.TRN'\n\nWITH RECOVERY\n\nGO\n
Run Code Online (Sandbox Code Playgroud)\n