全文索引失败

填充或维护全文索引时,由于下面描述的原因,索引器可能无法索引一个或多个行。这些行级别的错误不会干扰填充的进行。索引器会跳过这些行,这意味着您无法查询这些行中包含的内容。

在以下情况下,可能会发生索引失败:

  • 索引器找不到或无法加载筛选器或断字符组件。如果表中的行所包含的文档格式或内容使用了尚未注册到 SQL Server 2005 实例的语言,则这样的索引失败可能会发生。如果在加载时已注册的断字符或筛选器组件未经过签名或签名验证失败,则这样的索引失败也可能会发生。
  • 诸如断字符或筛选器这样的组件失败,并向索引器返回错误。如果所索引的文档已损坏,并且筛选器无法从该文档提取文本,则这样的索引失败可能会发生。由于 Microsoft Full-Text Engine Filter Daemon (MSFTEFD) 受到的内存限制,当组件无法处理超过某个限制的单行中的内容时,这样的索引失败也可能会发生。

对于每个行级别的失败,爬网日志将包含有关失败原因的详细信息。将在完整或增量填充的末尾总计错误计数。

还有其他失败会影响索引进程本身,使填充无法完成:

  • 全文索引超过了全文目录中可以包含的行数限制。
  • 索引的表的聚集索引或全文键索引已更改、删除或重新生成。
  • 硬件故障或磁盘损坏导致全文目录遭到破坏。
  • 全文索引的表所在的文件组转到脱机状态,或已设为只读。

在任何重要的全文索引填充操作结束时,或在发现填充未完成时,应当查看爬网日志。

未签名的组件

默认情况下,全文索引器要求它所加载的筛选器和断字符经过签名。如果它们未经过签名(这种情况有时是在安装自定义组件时造成的),则必须将全文索引器配置为忽略签名验证。

ms142595.note(zh-cn,SQL.90).gif重要提示:
忽略签名验证将降低 SQL Server 实例的安全性。我们建议您签名您所实现的所有组件,或确保您获得的所有组件都经过签名。有关签署组件的信息,请参阅 sp_fulltext_service (Transact-SQL)

超过全文目录行限制

单个全文目录中可以包含的行数限制为 2,147,483,643。如果超出此限制,会收到一条错误消息。若要解决此问题,请首先计算与给定的全文目录关联的每个表中的行数。确定超出限制的行数是多还是少。

  • 如果超出此限制的行数较少,请考虑将与给定全文目录相关联的一个或多个索引移到另一个目录。然后运行带有 REORGANIZE 选项的 ALTER FULLTEXT CATALOG 语句。
  • 如果超出此限制的行数很多,请考虑先运行带有 REORGANIZE 选项的 ALTER FULLTEXT CATALOG。切记这是一种需要占用大量资源的操作。

还可以考虑从关联的表中删除一些项。

请参阅

概念

全文索引

其他资源

全文搜索概念
ALTER FULLTEXT CATALOG (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助