联机还原 (SQL Server)

适用范围:SQL Server

只有 SQL Server Enterprise Edition 支持联机还原。 在此版本中,文件还原、页面还原或段落还原默认处于联机状态。 本主题与包含多个文件或文件组的数据库相关;在简单恢复模式下,仅与包含只读文件组的数据库相关。

数据库联机时还原数据的过程称为“联机还原” 。 只要主文件组处于联机状态,就将数据库视为联机,即使有一个或多个辅助文件组处于脱机状态。 在任何恢复模式下,您都可以在数据库联机时还原处于脱机状态的文件。 在完整恢复模式下,您还可以在数据库联机时还原页。

注意

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

联机文件还原期间,正在还原的任何文件及其文件组均处于脱机状态。 如果联机还原开始时这些文件中有任何一个处于联机状态的话,则第一个还原语句将使该文件的文件组脱机。 相反,在联机页面还原期间,只有该页处于脱机状态。

所有联机还原方案均涉及以下几个基本步骤:

  1. 还原数据。

  2. 使用 WITH RECOVERY 还原最近的日志。 此操作将使已还原的数据联机。

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

注意

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

重要

如果创建备份时有多个设备连接到服务器,则联机还原期间,可用设备数必须相同。

注意

使用快照备份时,不能执行 Online Restore。 有关 快照备份的详细信息,请参阅 Azure 中数据库文件的文件快照备份

用于联机还原的日志备份

对于联机还原,恢复点是正在还原的数据最后一次脱机或设为只读时的时间点。 直到并包括此恢复点在内的所有事务日志备份都必须可用。 通常在该点后都需要日志备份,以覆盖文件的恢复点。 唯一的例外情况是在使用当数据变为只读后执行的数据备份对只读数据进行联机还原的时候。 在这种情况下,不必准备日志备份。

通常,即使在启动还原顺序之后,您也可以在数据库联机时执行事务日志备份。 上次日志备份的时间取决于要还原的文件的属性:

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

    注意

    以上信息也适用于所有脱机文件。

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

    注意

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

使数据库或文件脱机

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

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

    ALTER DATABASE database_nameSET 离线

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

    BACKUP LOG database_name WITH NORECOVERY。

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

示例

注意

联机还原顺序的语法与脱机还原顺序的语法完全相同。

相关任务

另请参阅

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