2

我们有一个 SQL Server 2008 R2 数据库,它时不时地备份事务日志。今天上午 12 点左右,数据库出现了一个大错误……我的事务日志一直持续到上午 8 点,然后是上午 12 点 - 下午 16 点 - 等等。

我的问题是:我可以将这些事务日志反向合并到数据库中,以便我在早上 8 点返回数据库状态吗?

还是我最好的机会来恢复较早的完整备份并将所有事务日志恢复到早上 8 点?

第一个选项更可取,因为完全备份已经执行了一段时间,我害怕从那里恢复并应用 trn 日志。我对此有误会吗?如果按照这种情况(恢复完整备份并应用 trn 日志),是否真的有可能发生任何不好的事情?

4

1 回答 1

4

您不创建常规事务日志备份这一事实不会影响恢复过程的成功。只要您的数据库处于完全恢复模式,事务就会存储在联机事务日志中并保存在其中,直到进行事务日志备份为止。如果您比平时更晚进行事务日志备份,则仅意味着在线事务日志可能会增长并且备份可能会更大。它不会导致任何交易历史丢失。

使用完整的事务日志备份链回到早上 8 点,您可以成功地将整个数据库回滚到某个时间点。

至于恢复完整备份和应用 trn 日志——应该不会出错,但始终建议先在测试服务器上测试场景,而不是直接在生产环境中测试

要恢复到某个时间点:

  1. 在 SSMS 中展开数据库
  2. 右键单击数据库,选择任务 | 恢复| 数据库
  3. 在常规选项卡中,将在备份集中列出可用的备份。单击时间轴
  4. 选择特定日期和时间,更改时间间隔以显示更宽的时间范围,然后将滑块移动到您要回滚到的时间

在此处输入图像描述

您可以在此处找到更详细的说明:如何:还原到某个时间点 (SQL Server Management Studio)

请记住,此过程将回滚对数据库所做的所有更改。如果您只想回滚特定的更改(例如,仅恢复一些已删除的数据,或反转错误的更新),我建议使用第三方工具,例如 ApexSQL Log

将 SQL Server 数据库恢复到特定时间点

将数据库恢复到某个时间点

免责声明:我作为支持工程师在 ApexSQL 工作

于 2014-02-21T09:24:27.527 回答