控制在前滚过程中是否创建添加的文件

通常,在完整备份后对文件和文件组的更改是透明的。如果文件是在文件组最后一次备份之后添加到数据库中的,则在您还原该数据库时,最简单的方法是允许还原操作自动重新创建被还原数据库中的所有文件。不过,这样可能会不必要地重新创建未损坏的只读文件。当使用还原操作来修复所发现的独立问题时,可以仅还原出现问题的文件,以优化还原性能。

注意注意

如果还原的备份包含 SQL Server 数据库引擎要求删除的文件,SQL Server 数据库引擎将跳过这些文件的数据复制和重做阶段。有关这些阶段的信息,请参阅了解 SQL Server 中备份的还原和恢复工作方式

还原操作是否创建文件取决于您是否在 RESTORE DATABASE 语句中指定了文件或页,如下所述:

  • 如果没有指定特定的文件或页

    这是典型情况。在遇到向数据库添加文件的日志条目时,还原操作将自动创建该文件并将其添加到前滚集。具体行为取决于您是否在 RESTORE DATABASE 语句中指定了文件组。如果未指定任何文件组,将创建所有的新文件并添加到前滚集。如果指定了文件组,则只有当文件属于指定的文件组时才会创建新文件并将其添加到前滚集。

    **最佳做法:**对于大多数还原,应避免列出特定文件,以使日志事务创建的所有文件都可以自动重新创建。

  • 如果指定了特定的文件或页

    在 RESTORE DATABASE 语句中列出特定的文件或页可定义确切的前滚集。如果列出了文件或页,还原操作将严格按照您的指示仅还原这些条目。

    未列出的文件被假定是好文件且不会从日志中创建。因此,在还原包含添加文件操作的日志备份时,必须在 RESTORE 语句中指定添加文件的名称。

本主题的余下部分说明如何识别包含添加文件操作的文件,以及如何确保在还原顺序中能重新创建这些文件。

识别包含添加文件操作的日志文件

可以使用以下方法识别包含添加文件操作的日志文件:

  • 可以使用文件创建 LSN (create_lsn)。这在 sys.database_filessys.master_files 目录视图中均可用。

  • msdb 中的备份历史记录表中或使用 RESTORE FILELISTONLY 获取有关备份文件内容的信息。有关详细信息,请参阅 RESTORE FILELISTONLY (Transact-SQL)

不使用完整备份来还原文件或页

可以在日志或差异还原中指定文件列表、页列表或文件组。可以使用此功能还原没有完整数据库备份的文件或页。还原顺序的原则是必须从完整备份开始,但从差异备份或日志备份还原文件或页是个特例。

从差异文件备份进行还原的基本语法是:

RESTORE DATABASE database_name <file_filegroup_page_list> FROM <differential backup>

从日志备份进行还原的基本语法是:

RESTORE LOG database_name <file_filegroup_page_list> FROM <log backup>