联机还原 (SQL Server)

仅 SQL Server Enterprise 版本支持联机还原。 在此版本中,默认情况下,文件、页面或部分还原可以在线进行。 本主题与包含多个文件或文件组的数据库相关(在简单恢复模式下,仅适用于只读文件组)。

在数据库在线时还原数据称为在线还原。 只要主文件组处于联机状态,数据库就会被视为联机状态,即使其中一个或多个辅助文件组处于脱机状态。 在任何恢复模式下,都可以在数据库处于联机状态时还原脱机的文件。 在完整恢复模式下,还可以在数据库处于联机状态时还原页面。

注释

联机还原在 SQL Server Enterprise 上自动发生,无需用户作。 如果不想使用联机还原,可以在开始还原之前使数据库脱机。 有关详细信息,请参阅本主题后面的将数据库或文件脱机部分。

在联机文件还原期间,正在还原的任何文件及其文件组都处于脱机状态。 如果在联机还原启动时这些文件处于联机状态,则第一个还原语句将文件组脱机。 相比之下,在联机页面还原期间,只有页面处于脱机状态。

每个联机还原方案都涉及以下基本步骤:

  1. 还原数据。

  2. 使用 WITH RECOVERY 进行最后一次日志还原,以恢复日志。 这会使还原的数据上线。

有时,无法回滚未提交的事务,因为回滚所需的数据在启动期间处于脱机状态。 在这种情况下,事务将被推迟。 有关详细信息,请参阅延迟事务(SQL Server)。

注释

如果数据库当前正在使用大容量日志恢复模式,建议在开始联机还原之前切换到完整恢复模式。 有关详细信息,请参阅 查看或更改数据库(SQL Server)的恢复模式

重要

如果备份是使用连接到服务器的多个设备创建的,则联机还原期间必须提供相同数量的设备。

联机还原的日志备份

在在线还原中,恢复点是还原的数据最后一次被脱机或设为只读的时刻。 导致并包括此恢复点的事务日志备份必须全部可用。 通常,在该点之后需要日志备份才能覆盖文件的恢复点。 唯一的例外是在联机恢复过程中还原只读数据,这是从数据变为只读后进行的数据备份。 在这种情况下,无需备份日志。

通常,在数据库处于联机状态时,即使还原序列开始后,也可能会进行事务日志备份。 上次日志备份的时间取决于要还原的文件的属性:

  • 对于联机只读文件,您可以在首次还原序列之前或期间执行恢复所需的最后一个日志备份。 在文件组变为只读之后,如果执行了数据备份或差异备份,则可能不需要对只读文件组进行日志备份。

    注释

    上述信息也适用于每个脱机文件。

  • 对于发出第一个还原语句时处于联机状态的读/写文件,然后由该还原语句自动脱机,则存在一个特殊情况。 在这种情况下,必须在第一个 还原序列 期间进行日志备份(还原、前向滚动和恢复数据的一个或多个 RESTORE 语句的序列)。 通常,在还原所有完整备份之后以及恢复数据之前,必须执行此日志备份。 但是,如果特定文件组有多个文件备份,则最小日志备份点是文件组脱机后的时间。 此数据恢复后日志备份记录了文件被下线的具体时刻。 数据后还原日志备份是必需的,因为 SQL Server 数据库引擎无法使用联机日志进行联机还原。

    注释

    或者,你可以在还原序列之前手动将文件离线。 有关详细信息,请参阅本主题后面的“使数据库或文件脱机”。

使数据库或文件脱机

如果不想使用联机还原,可以使用下列方法之一启动还原顺序之前使数据库脱机:

  • 在任何恢复模式下,可以使用以下 ALTER DATABASE 语句使数据库脱机:

    ALTER DATABASE database_name SET OFFLINE

  • 或者,在完整恢复模式下,可以使用以下 BACKUP LOG 语句将数据库置于还原状态,强制文件或页面还原脱机:

    备份日志 database_name 使用 NORECOVERY。

只要数据库保持脱机状态,所有还原都是脱机还原。

例子

注释

联机还原序列的语法与脱机还原序列的语法相同。

相关任务

另请参阅

文件还原(完整恢复模式)
文件还原 (简单恢复模式)
还原页(SQL Server)
碎片还原 (SQL Server)
还原和恢复概述 (SQL Server)