我试图弄清楚如何获取以下代码以返回刚刚插入的行-一位同事指出并建议运行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

最佳答案

首先,请确保将您的全文索引设置为自动更改跟踪。此查询的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'

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

关于sql - 如何在mssql的事务中强制刷新全文索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3548590/

10-11 11:20