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