排查 Full-Text 索引失败故障
在填充或维护全文索引时,全文索引器可能会由于下面所述的原因而无法为一行或多行编制索引。 这些行级错误不会阻止数据的完成。 索引器跳过这些行,这意味着无法查询这些行中包含的内容。
在以下情况下,可能会发生索引失败:
索引器找不到或加载筛选器或断词器组件。 如果表行包含未向 SQL Server 实例注册的语言的文档格式或内容,则会发生此失败。 如果注册的断字符或筛选器组件在加载时未签名或签名验证失败,也可能发生此失败。
组件(如断字符或筛选器)失败,并向索引器返回错误。 如果正在编制索引的文档已损坏,并且筛选器无法从文档中提取文本,则可能会发生这种情况。 当某个组件因全文筛选器守护程序主机(fdhost.exe)的内存限制而无法处理大小超过特定阈值的单行内容时,也可能发生这种情况。
对于每个行级失败,爬网日志包含有关失败原因的详细信息。 错误计数在完整数据填充或增量数据填充结束时进行汇总。
还有其他故障可能会影响索引进程本身,并阻止索引填充过程的完成。
全文索引超出了可包含在全文目录中的行数的限制。
对被索引的表的聚集索引或全文键索引会被更改、删除或重新生成。
硬件故障或磁盘损坏导致全文目录损坏。
包含全文索引的表的文件组处于脱机状态,或设置为只读。
应在任何重要性的全文索引填充操作结束时查看抓取日志,或者在发现填充操作未完成时查看抓取日志。
未签名的组件
默认情况下,全文索引器需要加载的筛选器和分词器是已签名的。 如果未签名,则有时安装自定义组件时,必须配置全文索引器以忽略签名验证。
重要
忽略签名验证会使 SQL Server 的实例不那么安全。 建议对实现的任何组件进行签名,或确保获取的任何组件都已签名。 有关签名组件的信息,请参阅sp_fulltext_service(Transact-SQL)。
事务日志还原后,Full-Text 索引处于不一致的状态。
还原数据库的事务日志时,可能会看到一条警告,指示全文索引未处于一致状态。 原因是在备份数据库后修改了表的全文索引。 若要使全文索引达到一致状态,必须对表执行完整填充(爬网)。 有关详细信息,请参阅 填充全文索引。