执行联机还原

仅 SQL Server 2005 Enterprise Edition 及更高版本支持联机还原。在此版本中,文件还原、页面还原或段落还原默认处于联机状态。

 本主题与包含多个文件或文件组的数据库相关;在简单恢复模式下,仅与包含只读文件组的数据库相关。

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

注意注意

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

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

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

  1. 还原数据。

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

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

注意注意

如果数据库正在使用大容量日志恢复模式,建议您在开始执行联机还原之前切换到完整恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项

重要说明重要提示

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

联机还原所需的日志备份

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

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

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

    注意注意

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

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

    注意注意

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

使数据库或文件脱机

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

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

    ALTER DATABASE database_name SET OFFLINE

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

    BACKUP LOG database_name WITH NORECOVERY。

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