部分还原 (SQL Server)

适用范围:SQL Server

本主题与 SQL Server 的 Enterprise 版本(联机还原)或 Standard 版本(脱机还原)中包含多个文件或文件组的数据库相关;在简单模式下,仅与包含只读文件组的数据库相关。

有关段落还原和内存优化表的信息,请参阅 对具有内存优化表的数据库进行段落还原

“段落还原”允许分阶段还原和恢复包含多个文件组的数据库。 段落还原包括从主文件组开始(有时也从一个或多个辅助文件组开始)的一系列还原顺序。 分段还原会执行检查,以确保数据库最终保持一致性。 在还原顺序结束后,如果恢复的文件有效并且与数据库一致,则恢复的文件将直接变为联机状态。

分段还原适用于所有恢复模式,但对于完整恢复模式和大容量日志恢复模式,它比对于简单恢复模式更灵活。

每个分段还原都始于一个称为部分还原序列的初始还原序列。 部分还原顺序至少还原和恢复主文件组,在简单恢复模式下还会还原和恢复所有读/写文件组。 在分段还原过程中,整个数据库必须脱机。 随后,数据库将处于联机状态,并且还原的文件组都处于可用状态。 但是,所有未还原的文件组都将保持脱机状态,无法访问。 不过,对于任何脱机文件组,都可以在以后通过文件还原进行还原并进入联机状态。

无论数据库使用的恢复模式如何,部分还原序列都以 RESTOREDATABASE 还原完整备份并指定 PARTIAL 选项的语句开头。 PARTIAL 选项始终启动新的分段还原;因此,在部分还原序列的初始语句中,必须仅指定一次 PARTIAL。 当部分还原过程完成并且数据库被置为联机状态后,由于其余文件的恢复已被推迟,这些文件的状态将变为“恢复挂起”。

随后,部分还原通常包括一个或多个还原序列,这些序列称为文件组还原序列。 您可以等待执行特定的文件组还原顺序,等待的时间长短由您决定。 每个文件组还原顺序将一个或多个脱机文件组还原并恢复到与数据库一致的点。 文件组还原顺序的时间安排和数量取决于您的恢复目标、您想要还原的脱机文件组数量以及每个文件组还原顺序中还原的脱机文件组的数量。

执行分段还原的具体要求取决于数据库的恢复模式。 有关详细信息,请参阅本主题后面的“简单恢复模式下的段落还原”和“完整恢复模式下的段落还原”。

分段还原场景

所有版本的 SQL Server 都支持脱机段落还原。 在企业版中,分段还原既可以联机进行,也可以脱机进行。 脱机和联机部分还原的影响如下:

  • 脱机分段还原场景

    在脱机分段还原中,数据库在部分还原序列完成后即处于联机状态。 尚未还原的文件组保持脱机状态,但是在数据库脱机后,可以根据需要还原这些文件组。

  • 在线分段还原场景

    在进行联机段落还原时,数据库在部分还原顺序后处于联机状态,并且主文件组和所有已恢复的辅助文件组都处于可用状态。 尚未还原的文件组保持脱机状态,但是在数据库保持联机状态时,可以根据需要还原这些文件组。

    联机分段还原可能涉及延迟事务。 如果仅还原了一部分文件组,则数据库中依赖联机文件组的事务可能会延迟。 这是正常现象,因为整个数据库必须一致。 有关详细信息,请参阅延迟的事务 (SQL Server)

  • 内存中 OLTP 部分还原场景

    有关内存中 OLTP 数据库的段落还原信息,请参阅 对具有内存优化表的数据库进行段落备份和还原

限制

如果部分还原顺序不包括任何 FILESTREAM 文件组,则不支持时间点还原。 您可以强制还原过程继续进行。 但是,永远无法还原从 RESTORE 语句中省略的 FILESTREAM 文件组。 若要强制时间点还原,请将CONTINUE_AFTER_ERROR选项与 STOPAT、STOPATMARK 或 STOPBEFOREMARK 选项一起指定,还必须在后续 RESTORE LOG 语句中指定此选项。 如果指定 CONTINUE_AFTER_ERROR,则部分还原顺序将成功,但 FILESTREAM 文件组将不可恢复。

简单恢复模式下的部分还原

在简单恢复模式下,分段还原顺序必须从完整数据库备份或部分备份开始。 随后,如果还原的备份为差异基准,则接着还原最新差异备份。

在第一个部分还原顺序期间,如果您仅还原读/写文件组的一个子集,当您恢复部分还原的数据库时,未还原的文件组会失效。 从部分还原顺序中省略一个读/写文件组仅适用于下列情况:

  • 你打算将未还原的文件组设为废弃状态。

  • 还原序列将到达某个恢复点,此时每个尚未还原的文件组都已变为只读、已删除或已失效(在部分还原序列中之前的某次还原期间)。

  • 完整备份是在数据库使用简单恢复模式时进行的,但恢复点却位于数据库使用完整恢复模式的某个时刻。 有关详细信息,请参阅本主题后面的“执行已从简单恢复模式切换到完整恢复模式的数据库段落还原”。

简单恢复模式下进行部分还原的要求

在简单恢复模式下,初始阶段还原并恢复主文件组和所有读/写辅助文件组。 在初始阶段结束后,如果恢复的文件有效并且与数据库一致,则恢复的文件将直接变为联机状态。

随后,可以在一个或多个其他阶段中还原只读文件组。

仅当满足以下条件时,分段还原才可用于只读辅助文件组:

  • 备份时处于只读状态。

  • 保持只读状态(逻辑上与主文件组保持一致)。

若要执行分段还原,必须遵循以下准则:

  • 对于采用简单恢复模式的数据库,要执行分段还原,必须具备包含以下内容的一整套备份:

    • 部分数据库备份或完整数据库备份,其中包含在备份时处于读/写状态的主文件组和所有文件组。

    • 每个只读文件的备份。

  • 要使只读文件的备份与主文件组保持一致,次要文件组必须从对其进行备份时起直到包含主文件组的备份完成时为止一直处于只读状态。 如果差异文件备份是在文件组变为只读状态之后进行的,则可以使用差异文件备份。

分段还原阶段(简单恢复模式)

部分还原过程分为以下阶段:

  • 初始阶段(还原并恢复主文件组和所有读/写文件组)

    初始阶段进行部分还原。 部分还原顺序将还原主文件组、所有读/写辅助文件组和(可选的)部分只读文件组。 在初始阶段中,整个数据库都必须脱机。 初始阶段后,数据库将处于联机状态,并且已还原的文件组都处于可用状态。 但是,尚未还原的任何只读文件组将保持脱机状态。

    初始阶段的第一 RESTORE 个语句必须执行以下操作:

    • 使用包含主文件组以及备份时处于读/写状态的所有文件组的部分数据库备份或完整数据库备份。 通常通过还原部分备份来开始部分还原过程。

    • 指定 PARTIAL 选项,该选项表示开始进行分段还原。

    注意

    PARTIAL 选项会执行安全检查,确保生成的数据库适合用作生产数据库。

    • 如果备份是完整数据库备份,则指定 READ_WRITE_FILEGROUPS 选项。
  • 数据库处于联机状态时,可以使用一个或多个联机文件还原来还原并恢复在备份时处于只读状态的脱机只读文件。 联机文件还原的时间安排取决于您希望数据联机的时间。

    是否必须将数据还原到文件中取决于以下因素:

    • 通过恢复文件而不还原任何数据,可以直接使与数据库一致的有效只读文件联机。

    • 恢复文件之前,必须先还原已损坏的或与数据库不一致的文件。

示例

完整恢复模式下的分段还原

在完整恢复模式或大容量日志恢复模式下,任何包含多个文件组的数据库都可以使用段落还原,并且可以将数据库还原到任何时间点。 分段还原的还原顺序如下所示:

  • 部分还原顺序

    部分还原顺序会还原主文件组和(可选的)部分辅助文件组。

    第一个 RESTOREDATABASE 语句必须执行以下操作:

    • 指定 PARTIAL 选项。 这表示分段还原的开始。

    • 使用包含主文件组的任何完整数据库备份。 常见的做法是通过还原部分备份来启动部分还原顺序。

    • 若要还原到特定的时间点,必须在部分还原顺序中指定该时间。 还原顺序的每个后续步骤都必须指定相同的时间点。

  • 文件组还原序列会将其他文件组联机,并使其恢复到与数据库一致的时间点。

    在 Enterprise Edition 中,当数据库保持联机状态时,可还原和恢复任何脱机辅助文件组。 如果特定只读文件未损坏且与数据库一致,则该文件无需还原。 有关详细信息,请参阅恢复数据库而不还原数据 (Transact-SQL)

应用日志备份

如果在文件备份创建之前,只读文件组就已处于只读状态,则该文件组无需应用日志备份,并且文件还原会跳过日志备份的应用过程。 如果文件组是可读写的,则必须在最近一次完整还原或差异还原之后应用连续不断的日志备份链,才能将该文件组前滚到当前日志文件。 有关恢复过程的详细信息,请参阅还原和恢复概述 (SQL Server)

示例

执行已从简单恢复模式切换到完整恢复模式的数据库段落还原

您可以对某个数据库执行部分还原;如果该数据库自上次完整备份、部分备份或数据库备份以来,已从简单恢复模式切换为完整恢复模式。 例如,假设要对某个数据库执行下列步骤:

  1. 创建简单模式数据库的一个部分备份 (backup_1)。

  2. 过一段时间后,将恢复模式更改为完整。

  3. 创建差异备份。

  4. 开始进行日志备份。

此后,下列顺序是有效的:

  1. 省略了某些辅助文件组的部分还原。

  2. 先执行差异还原,然后执行任何其他所需的还原操作。

  3. 随后,从 backup_1 部分备份中对读/写次要文件组执行 WITH NORECOVERY 的文件还原

  4. 差异备份,以及在原始分段还原序列中已还原的任何其他备份,用于将数据还原到原始恢复点。

另请参阅

应用事务日志备份 (SQL Server)
RESTORE (Transact-SQL)
将 SQL Server 数据库还原到某个时点(完整恢复模式)
还原和恢复概述 (SQL Server)
计划和执行还原顺序(完整恢复模式)
还原和恢复概述 (SQL Server)