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

问题描述 投票:2回答:1

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

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:

数据库'test'无法打开。它正在进行还原。

而它显然不是。有什么建议可以解决吗?目前发现 RECOVERY 帮助,但你可以看到它没有。

编辑

改变 NORECOVERYRECOVERY 没有帮助,因为我无法执行第二条命令(抛出错误),我需要在特定时刻的日志。

编辑

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

RESTORE DATABASE test
WITH RECOVERY
GO

看来 RECOVERY 忽略了 RESTORE LOG 命令,它需要额外的命令来确认还原已经完成。但我很感激你的帮助。

sql-server tsql recovery
1个回答
3
投票

这个

USE master
GO
RESTORE LOG test
FROM Kingston
WITH STOPAT = '2020-05-13 14:05:25', RECOVERY;

如果STOPAT时间超出日志备份中的时间范围,将不执行恢复。 这允许您为多个日志备份指定STOPAT,只有当您应用了包含目标时间的日志备份时,数据库才会运行恢复。

从文档中可以看出。

RECOVERY和STOPAT选项: 如果事务日志备份不包含所请求的时间(例如,如果指定的时间超过了事务日志所覆盖的时间结束),则会生成一个警告,数据库仍然无法恢复。

将 SQL Server 数据库恢复到时间点(完全恢复模型)。


0
投票

出现这个错误的原因是你使用了NORECOVERY模式进行恢复,它不允许使用数据库。现在你应该使用with RECOVERY模式来恢复数据库,这样你就可以轻松地访问数据。

为了纠正这个常见的错误,你需要使用WITH RECOVERY选项。请按照以下步骤进行操作。

- T-SQL脚本恢复数据库与RECOVERY 。

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
© www.soinside.com 2019 - 2024. All rights reserved.