全文索引不更新(SQL 2005)

时间:2009-02-17 20:02:30

标签: sql sql-server-2005 full-text-search

我有一张表在上周完成了全文搜索工作。有超过七百万条记录,我看到它在全文索引中有超过七百万条记录。

但搜索结果中显示的不是一周之久。我可以在表格的全文索引属性中看到,“待定”条目的数量正在增加(可能是今天的3万个),可能与未添加到索引中的内容相对应。

我检查的第一件事是索引是否已启用。它不是,所以我启用它,启动“ALTER FULLTEXT INDEX”作业的进程开始阻止服务器上的所有其他请求,所以我杀了它。

我已确认全文索引服务正在运行并自动启动。我还确认它会自动检查更改,虽然将其从“自动”转换为“手动”到“关闭”似乎没有做太多事情,除了重置排队结果的数量。 (将其转回“自动”会将数字重置为30,000。)

我曾尝试重建全文索引,但对于“Full”和“Incremental”,它会抛出一条关于“已经存在索引”的消息。 “更新”说“命令已成功完成”,但似乎没有任何效果。

我今天做的最后一件事是:

  1. 禁用全文索引
  2. 重建FTI所基于的聚簇索引
  3. 重新启用FTI
  4. 这开始了“ALTER FULLTEXT INDEX”工作,再次阻止了所有正在进行实际工作的流程。

    我们正在尝试在选项A之间做出决定:擦除现有的FTI并从头开始重建,选项B:执行禁用/重建/重新启用技巧,这似乎开始有用的东西。 (我们会做B然后做A,但是我们预计会有一两个小时的停机时间,A过去也有效。)

    有没有更快的方法来做这些?还有任何想法我是如何在这种情况下首先得到的?

2 个答案:

答案 0 :(得分:2)

这是一个有趣的问题。我想你是因为它被禁用了。我可能已经找到了一种方法可以让你摆脱它而不会阻挡其他一切。

首先,要知道此行为是SQL Server 2005 SP1之前的错误,请确保您拥有SP1。

如果您已经这样做,请尝试:

ALTER FULLTEXT INDEX ON tablename SET CHANGE_TRACKING MANUAL

ALTER FULLTEXT INDEX on tablename START UPDATE POPULATION

如果有效,那么我认为你遇到了与this家伙相同的问题。他只是每小时左右开始工作。当然,这是一个临时解决方案,但它会给你时间,直到你真正重建索引。

刚想到的其他事情,你试过REORGANIZEing索引吗?我知道它没有阻止但是我不确定它是否会导致刷新以这种方式发生以防止阻塞。

答案 1 :(得分:0)

只是为了澄清您已经检查过创建索引的分区是否有空格。我们在DEV环境中遇到了这个问题,全文索引不会更新。