我遇到了与此处描述的问题类似的问题:
但是,那里发布的推荐解决方案不起作用。我尝试在同一个主题上发布后续内容,但它被版主删除了。所以我开始一个新的问题。
与原始查询类似,我也尝试在事务中实现单元测试。我想将数据插入全文索引列,查询数据以检查其有效性,然后回滚插入。
问题是在我提交事务之前索引似乎没有更新。我已经尝试过“WAITFOR DELAY”方法,但是无论我等待多长时间索引都不会更新,直到事务提交之后。
这是我正在尝试做的一个示例:
BEGIN TRAN
INSERT INTO AMMS.Content
(
ContentTypeId,
Name,
ImportDate,
IsDeleted,
LastModifiedBy,
LastModifiedAt,
DisplayInPortal,
StatusId
)
VALUES
(
4,
'my unit test content',
GETUTCDATE(),
0,
1,
GETUTCDATE(),
1,
2
)
declare @count int
set @count = 0
while @count < 10
begin
SELECT FULLTEXTCATALOGPROPERTY('PRIMARY', 'PopulateStatus') AS Status
select * from amms.Content where contains(Name, 'unit')
waitfor delay '00:00:01'
set @count = @count + 1
end
填充状态保持在 9 并且只要事务处于挂起状态,选择就不会返回任何行。一旦我提交填充状态返回 0 并且选择按预期返回单行。
我错过了什么吗?还有另一种方法可以做到这一点吗?这种行为在不同版本的 SQL Server 下是否有所不同?(我目前正在使用 2008 进行测试)