段落还原和全文索引
本主题仅与包含多个文件组的数据库有关;对于简单模式数据库,仅与只读文件组有关。
全文索引存储在数据库文件组中,受段落还原的影响。如果全文索引与任何关联的表数据位于同一文件组中,则段落还原将按预期的方式工作。
注意 |
---|
若要查看包含全文索引的文件组的文件组 ID,请选择 sys.fulltext_indexes 的 data_space_id 列。 |
全文索引和表在不同的文件组中
如果全文索引与所有关联的表数据位于不同的文件组中,则段落还原的行为取决于哪个文件组首先还原并变为联机:
如果包含全文索引的文件组先于包含关联表数据的文件组还原并变为联机,则在全文索引联机后,全文搜索将按预期的方式工作。
如果包含表数据的文件组先于包含全文索引的文件组还原并变为联机,则全文行为可能会受到影响。这是因为在索引联机之前,触发填充、重新生成目录或者重新组织目录的 Transact-SQL 语句会失败。这些语句包括 CREATE FULLTEXT INDEX、ALTER FULLTEXT INDEX、DROP FULLTEXT INDEX 和 ALTER FULLTEXT CATALOG。
在这种情况下,下列因素就至关重要:
如果全文索引具有更改跟踪,则在索引文件组联机之前,用户 DML 会失败。在索引文件组联机之前,删除操作也会失败。
不管是否有跟踪更改,由于索引不可用,全文查询都会失败。如果在包含全文索引的文件组脱机时尝试全文查询,则会返回错误。
状态函数(如 FULLTEXTCATALOGPROPERTY)只有在不必访问全文索引时才会成功。例如,访问任何联机的全文元数据都会成功,但 uniquekeycount, itemcount 会失败。
在全文索引文件组还原并变为联机之后,目录数据和表数据将一致。
在基表文件组和全文索引文件组均联机后,将立即恢复所有暂停的全文填充。