恢复到特定时间点

本主题仅适用于使用完整恢复模式或大容量日志恢复模式的 SQL Server 数据库。

在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能使用时点恢复方式恢复到该备份内的某个点。必须将数据库恢复到事务日志备份的结尾。

还原到特定时间

还原到特定时间的 Transact-SQL 语法

始终从日志备份还原到指定时间。在还原序列的每个 RESTORE LOG 语句中,必须在相同的 STOPAT 子句中指定目标时间或事务。作为时点还原的先决条件,必须首先还原其端点早于目标还原时间的完整数据库备份。只要您之后还原每个随后日志备份(到达和包括包含目标时间点的日志备份),该完整数据库备份就可以早于最近的完整数据库备份。

如果数据备份太临近指定的目标时间,而需帮助识别要还原哪个数据库备份,则可以在 RESTORE DATABASE 语句中可选地指定 WITH STOPAT 子句以引发错误。始终会还原完整数据备份,即使该数据备份包含目标时间也同样如此。

基本语法为:

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

恢复点是在时间指定的 datetime 值或之前发生的最后的事务提交。

若要只还原在特定时间点之前所做的修改,请为还原的每个备份指定 WITH STOPAT = 时间。这样确保了不会超出目标时间。

通常,时点还原顺序分为以下阶段:

  • 还原上次完整数据库备份以及上次差异数据库备份(如果有),而不恢复数据库 (RESTORE DATABASE 数据库名称 FROM 备份设备 WITH NORECOVERY)。

  • 以事务日志备份的创建顺序应用每个事务日志备份,指定想要停止还原日志的时间 (RESTORE DATABASE 数据库名称 FROM <备份设备> WITH STOPAT**=time,** RECOVERY)。

有关详细信息,请参阅将数据库还原到备份中的某个时间点