gpt4 book ai didi

sql-server - 如何从 SQL Server 事务中刷新全文索引

转载 作者:行者123 更新时间:2023-12-04 01:30:14 26 4
gpt4 key购买 nike

我遇到的问题与此处描述的问题类似:

How do I force a refresh of a fulltext index within a transaction in mssql?

但是,那里发布的推荐解决方案不起作用。我试着在同一个话题上发帖,但被版主删除了。所以我开始提出一个新问题。

与原始查询类似,我也试图在事务中实现单元测试。我想将数据插入全文索引列,查询数据以检查其有效性,然后回滚插入。

问题是在我提交事务之前索引似乎不会更新。我尝试过“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 进行测试)

最佳答案

我觉得你运气不好。尝试在事务中启动手动刷新...

begin tran
alter fulltext index on dbo.FTS_Table start full population

...给我这条信息:

Msg 574, Level 16, State 0, Line 1 ALTER FULLTEXT INDEX statement cannot be used inside a user transaction.

您有哪些备选方案可能取决于您如何管理单元测试,也许您可​​以再次DELETE 数据,或者完全DROP 表,如果它仅用于这个测试。

关于sql-server - 如何从 SQL Server 事务中刷新全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com