备份和还原全文目录和索引

适用范围:SQL Server

本文介绍如何备份和还原在 SQL Server 中创建的全文索引。 在 SQL Server 中,全文目录是一个逻辑概念,不驻留在文件组中。 因此,要备份 SQL Server 中的全文目录,必须识别包含属于该目录的全文索引的每个文件组。 然后您必须逐个备份这些文件组。

重要

升级 SQL Server 2005 (9.x) 数据库时,可以导入全文目录。 每个导入的全文目录在其自身的文件组中都是一个数据库文件。 若要备份导入的目录,请备份其文件组,在 SQL Server 2005 (9.x) 联机丛书中。

备份全文目录的全文索引

查找全文目录的全文索引

你可以通过使用以下 SELECT 语句检索全文索引的属性,此语句将从 sys.fulltext_indexessys.fulltext_catalogs 目录视图选择一些列。

USE AdventureWorks2022;
GO

DECLARE @TableID AS INT;

SET @TableID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product'));

SELECT object_name(@TableID),
       i.is_enabled,
       i.change_tracking_state,
       i.has_crawl_completed,
       i.crawl_type,
       c.name AS fulltext_catalog_name
FROM sys.fulltext_indexes AS i, sys.fulltext_catalogs AS c
WHERE i.fulltext_catalog_id = c.fulltext_catalog_id;
GO

查找包含全文索引的文件组或文件

创建全文索引时,该索引位于以下位置之一:

  • 用户指定的文件组。
  • 与基表或视图相同的文件组(对于未分区表而言)。
  • 主文件组(对于分区表而言)。

注意

有关创建全文索引的信息,请参阅 创建和管理全文索引CREATE FULLTEXT INDEX

若要查找表或视图的全文索引所属的文件组,请使用以下查询,其中 object_name 为表或视图的名称:

SELECT name
FROM sys.filegroups AS f, sys.fulltext_indexes AS i
WHERE f.data_space_id = i.data_space_id
      AND i.object_id = object_id('object_name');

备份包含全文索引的文件组

找到包含全文目录索引的文件组后,需要备份每个文件组。 在备份过程中,可能不会删除或添加全文目录。

文件组的首次备份必须是完整文件备份。 在创建文件组的完整文件备份之后,您可以仅备份文件组中的更改,方法是:创建一系列基于完整文件备份的一个或多个差异文件备份。

备份文件和文件组

还原全文索引

还原备份的文件组可还原全文索引文件以及文件组中的其他文件。 默认情况下,文件组将还原至该文件组在备份时所在的磁盘位置。

如果全文索引表处于联机状态,并且创建备份时正在运行填充,则还原后将恢复填充。

还原文件组