如何在mssql中强制刷新事务中的全文索引?

Ran*_*ggs 7 sql sql-server full-text-search

我试图找出如何让下面的代码返回,它只是插入的行 - 同事指出,建议运行ALTER FULLTEXT CATALOG uiris_production REBUILD但不能在用户事务中运行.

这必须是在一个事务的原因是,这是从一个测试框架,测试被包裹在一个事务中,然后回滚到来.

declare @search varchar(64)
set @login_test = 'foobar'
set @search = '"' + @login_test + '*"'

begin transaction
   insert into users(login) values (@login_test)
   select login from users where contains(login, @search)
commit
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 4

首先,确保您的全文索引设置为自动更改跟踪。对于此查询,change_tracking_state 应为“A”。

select t.name, fi.change_tracking_state 
    from sys.fulltext_indexes fi
        inner join sys.tables t
            on fi.object_id = t.object_id
    where t.name = 'users'
Run Code Online (Sandbox Code Playgroud)

但是,即使使用自动更改跟踪,更新全文也存在一定程度的延迟。您可能需要在单元测试中构建一个WAITFOR来适应这一点。