Sql-server – SQL Server Full-Text Index crawl: Is it done or not

dmvfull-text-searchsql serversql-server-2012

I am on SQL Server 2012. I have one table with one full-text index. That index was dropped and recreated around 8am due to a change in the datatype of the indexed column from TEXT to VARCHAR(MAX). These are the relevant entries in the log:

2017-01-06 08:02:52.65 spid25s Informational: Full-text Full
population initialized for table or indexed view
'[Helpdesk].[dbo].[TicketPosts]' (table or indexed view ID
'581577110', database ID '8'). Population sub-tasks: 4.

2017-01-06 10:56:47.98 spid9s Informational: Full-text Full
population completed for table or indexed view
'[Helpdesk].[dbo].[TicketPosts]' (table or indexed view ID
'581577110', database ID '8'). Number of documents processed: 7016145.
Number of documents failed: 0. Number of documents that will be
retried: 0.

2017-01-06 11:24:42.11 spid20s Informational: Full-text Auto
population initialized for table or indexed view
'[Helpdesk].[dbo].[TicketPosts]' (table or indexed view ID
'581577110', database ID '8'). Population sub-tasks: 1.

2017-01-06 11:24:43.12 spid9s Informational: Full-text Auto
population completed for table or indexed view
'[Helpdesk].[dbo].[TicketPosts]' (table or indexed view ID
'581577110', database ID '8'). Number of documents processed: 0.
Number of documents failed: 0. Number of documents that will be
retried: 0.

Between 11am and 11:24am, the TableFulltextItemCount OBJECTPROPERTY and the TableFulltextDocsProcessed OBJECTPROPERTY were equal (and were the same as the documents processed shown in the log for the first crawl).

However, during that time the TableFulltextPopulateStatus OBJECTPROPERTY returned 1 (Full Population In Progress), sys.dm_fts_index_population.completion_type_description was 'NONE', and sys.fulltext_indexes.crawl_end_date was null.

Why did the DMVs think that the crawl was still in progress long after the log says it was done and the processed count equals the item count? What was it doing during that time?

No change was made to the data between the first and second crawl, so why did the second crawl occur?

Best Answer

Since you have Change Tracking = AUTO configured you are telling the SQL Server to check on the changes that being made in the FULL TEXT INDEX. That means that the process is still running at a low level.

I would not be at all surprised to see some activity as the Full Text Indexing service is checking for changes.

Populate Full-Text Indexes for SQL Server 2012

A similar question was asked here back in 2013:

Full Text Search Populate Status - Processing notifications

Quoting from Frank J Garcia's answer:

There is a small overhead associated with change tracking because SQL Server maintains a table in which it tracks changes to the base table since the last population. When change tracking is used, SQL Server maintains a record of the rows in the base table or indexed view that have been modified by updates, deletes, or inserts.