数据库备份只是基础,恢复才是终极任务。如果数据库只实施备份,而不做定期数据恢复演练,也将会是管理上的灾难。

恢复注意点:

在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏。可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态。

SQL server 事务日志回滚 sql日志恢复_SQL server 事务日志回滚


在DB_1中做了完整备份,在Log_1,Log_2处做了日志备份。在Log_2备份之后不久,发生了故障。从Log_2备份到灾难发生时之间的日志。就是结尾日志(Tail of log)。

如果不能备份尾端日志,则数据库只能恢复到Log_2备份的点。尾端日志期间所做的改动全部丢失。[步骤参考]

※ 此步骤只作参考,请各位自行根据实际情况进行自己环境的细化!切勿生搬硬套!

右键数据库 -> 选择[还原数据库]

SQL server 事务日志回滚 sql日志恢复_数据文件_02


还原数据库的常规页

源=>选择[设备],添加备份文件,数据库选择需要恢复的库。

目标=> 数据库名称设置,点击[时间线]设置还原点

SQL server 事务日志回滚 sql日志恢复_数据库_03


还原点必须要基于连续的事务日志,否则无法还原。

SQL server 事务日志回滚 sql日志恢复_日志文件_04

还原数据库的文件页

勾选[将所有文件重新定位到文件夹],设置 [数据文件文件夹] 与 [日志文件文件夹]

SQL server 事务日志回滚 sql日志恢复_数据文件_05

还原数据库的选项页

如果是在业务环境实施演练恢复,请务必取消[结尾日志备份]!此选项默认会勾选,但他会对现有业务数据库造成影响。

SQL server 事务日志回滚 sql日志恢复_数据库_06


还原选项:

  • 覆盖现有数据库:<通常只有在明确现有数据库完全不可用才会选择,否则请谨慎选择>
  • 保留复制设置:此选项通常在同步复制环境中运用,普通数据库可以忽略
  • 限制访问还原的数据库:避免还原未完成即被外部用户访问

恢复状态:

  • Restore with recovery:通过回滚未提交的事务,使数据库处于可以使用的状态。无法还原其他事务日志。
  • Restore with norecovery:不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。
  • Restore with standby:使数据库处于只读模式。撤销未提交的事务,但将撤销操作保存在备用文件中,以便可使恢复效果逆转。

结尾日志备份:

  • 还原前进行结尾日志备份:默认勾选
    – 保持源书库处于正在还原状态:默认勾选
    ※ 如果恢复时间点不是最新,则不要勾选结尾日志备份。如完整备份、差异备份还原均不需要此选项,事务日志恢复到最新状态则需要设置。

恢复成功

SQL server 事务日志回滚 sql日志恢复_日志文件_07

[注意事项]

  1. 数据库处于[正在还原…]无法访问数据。
    解决方案=> 新建查询 执行RESTORE database dbname with recovery