恢复到特定时间点
本主题仅适用于使用完整恢复模式或大容量日志恢复模式的 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)。
有关详细信息,请参阅将数据库还原到备份中的某个时间点。