还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。您提供的有关该还原顺序意向的信息越多,遇到那些可能需要重新开始的错误的几率就越小。对于时点还原,SQL Server 数据库引擎使用在还原顺序开始时(或过程中)指定的信息来确定还原操作的目标时点。如果在顺序中等待时间过长,则该顺序将失败。必须在还原顺序中尽早提供停止信息,以确保还原不会超过您的时点目标。
如果希望在特定恢复点停止,则应将此意向与 RECOVERY 选项一起传达给每个 RESTORE LOG 语句(通过使用 STOPAT、STOPBEFOREMARK 或 STOPATMARK)。当 RECOVERY 和 STOPAT 选项同时使用时,如果事务日志备份不包含要求的时间(例如,如果指定的时间超出了事务日志所包含的时间范围),则会生成警告,并且不会恢复数据库。到达恢复点时,会恢复数据库,而试图还原其他日志备份的操作将失败。如果在还原日志备份时同时使用 RECOVERY 和 STOPAT 选项,可确保任何日志还原都不会超过停止时间。
RESTORE DATABASE database_name FROM full_backup
WITH NORECOVERY;
RESTORE DATABASE database_name FROM full_differential_backup
WITH NORECOVERY;
RESTORE LOG database_name FROM log_backup
WITH STOPAT = time, RECOVERY;
RESTORE LOG database_name FROM log_backup
WITH STOPAT = time, RECOVERY;
只有指定了 STOPAT、STOPBEFOREMARK 或 STOPATMARK 选项的语句才能声明停止点。如果在 RESTORE 语句中忽略该选项,则将还原完整备份。
当时点还原顺序正在进行中时,可以通过为 time 指定新值来更改恢复点(假定数据库尚未超过指定的新 time)。