Met*_*ate 14 index full-text-search sql-server-2012 change-tracking
我有这个数据库表,它应该使全文索引保持最新。但是我根本没有看到它发生(日志中没有错误,因为我看到的最后一个日志是我手动触发它时)。
这是我所看到的......
但在桌子上...
这可能是它不会自动发生的原因吗?
Kin*_*hah 16
你看错地方了。
你必须检查如下:
使用 T-SQL ..
Use database_name
go
ALTER FULLTEXT INDEX ON schema.table_name SET CHANGE_TRACKING AUTO;
Run Code Online (Sandbox Code Playgroud)
完成后,您可以检查上次填充的日期时间的状态
-- script source : http://stackoverflow.com/a/10505496/1387418
-- Modified by Kin on Dec 14' 2015 to reflect the FTCatalogName
DECLARE @CatalogName VARCHAR(MAX)
SET @CatalogName = 'AW2008FullTextCatalog' -- change here !
SELECT name as FTCatalogName,
DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'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 Full. Paused'
WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
FROM sys.fulltext_catalogs
Run Code Online (Sandbox Code Playgroud)
插入一些数据..
insert into HumanResources.JobCandidate
(BusinessEntityID, Resume, ModifiedDate)
values
(4, NULL, DEFAULT)
Run Code Online (Sandbox Code Playgroud)
现在您将看到 FT 目录已更新。
在日志 ( ..\MSSQL\Log\SQLFT*
) 中,下面也将是消息...
2015-12-14 12:36:51.29 spid50s 信息:表或索引视图 '[AdventureWorks2012].[HumanResources].[JobCandidate]' 的全文自动填充已完成(表或索引视图 ID '1589580701',数据库 ID ' 5')。处理的文档数:1。失败的文档数:0。将重试的文档数:0。
来自BOL:
默认情况下,或者如果您指定 CHANGE_TRACKING AUTO,全文引擎对全文索引使用自动填充。初始完全填充完成后,随着基表中的数据修改而跟踪更改,并自动传播跟踪的更改。然而,全文索引在后台更新,因此传播的更改可能不会立即反映在索引中。
默认情况下,SQL Server 会在创建新全文索引后立即完全填充它。然而,一个完整的人口会消耗大量的资源。因此,在高峰期创建全文索引时,通常最好的做法是将完整填充延迟到非高峰时间,尤其是在全文索引的基表很大的情况下。但是,索引所属的全文目录在填充其所有全文索引之前不可用。
另请参阅提高全文索引的性能
归档时间: |
|
查看次数: |
5899 次 |
最近记录: |