Sql server 如何定义全文索引的重建是否已完成?

Sql server 如何定义全文索引的重建是否已完成?,sql-server,full-text-indexing,Sql Server,Full Text Indexing,需要重新生成mssql全文索引。 问题是——我需要确切地知道工作何时完成。因此,只要打电话: ALTER FULLTEXT CATALOG fooCatalog REBUILD WITH ACCENT_SENSITIVITY = OFF 不起作用或者我做错了点事。:/ 有什么想法吗?您可以通过如下查询来确定全文索引的状态: SELECT FULLTEXTCATALOGPROPERTY('IndexingCatalog', 'PopulateStatus') AS Status 填充状态:

需要重新生成mssql全文索引。
问题是——我需要确切地知道工作何时完成。因此,只要打电话:

ALTER FULLTEXT CATALOG fooCatalog
REBUILD WITH ACCENT_SENSITIVITY = OFF  
不起作用或者我做错了点事。:/


有什么想法吗?

您可以通过如下查询来确定全文索引的状态:

SELECT FULLTEXTCATALOGPROPERTY('IndexingCatalog', 'PopulateStatus') AS Status
填充状态:
0=空闲
1=正在进行的全部人口
2=暂停
3=节流
4=恢复
5=关闭
6=正在增加的人口
7=建筑指数
8=磁盘已满。暂停。
9=变更跟踪

但也要注意文章中的注意事项:

以下属性将在SQL的未来版本中删除 服务器:LogSize和PopulateStatus。避免在中使用这些属性 新的开发工作,并计划修改当前 使用它们中的任何一个


编辑:更正了指向更新页面的链接,并添加了注释中的引文

,因为我还不能对马格纳斯的回答发表评论(缺乏声誉),我将在这里添加它。我发现MSDN上的信息存在冲突。根据我所引用的链接,PopulateStatus有以下10个可能的值:


所以-最好的选择是在(状态!=0)时调用它。。。现在还可以。还是比等待X秒并希望重建完成要好。是的,如果可以发起一些活动供您订阅,那就太好了,但据我所知,没有一个活动……此列表可能比仅上升到5的更正确。使用SQL2012,在重新填充全文索引表后,我立即看到状态为9。
0 = Idle.

1 = Full population in progress

2 = Paused

3 = Throttled

4 = Recovering

5 = Shutdown

6 = Incremental population in progress

7 = Building index

8 = Disk is full.  Paused.

9 = Change tracking
SELECT name, case FULLTEXTCATALOGPROPERTY(name, 'PopulateStatus') 
    when 0 then 'Idle'
    when 1 then ' Full population in progress'
    when 2 then ' Paused'
    when 3 then ' Throttled'
    when 4 then ' Recovering'
    when 5 then ' Shutdown'
    when 6 then ' Incremental population in progress'
    when 7 then ' Building index'
    when 8 then ' Disk is full.  Paused.'
    when 9 then ' Change tracking' end AS Status
from sys.fulltext_catalogs