Sql server CONTAINSTABLE谓词在短时间内多次调用时失败

Sql server CONTAINSTABLE谓词在短时间内多次调用时失败,sql-server,stored-procedures,full-text-search,Sql Server,Stored Procedures,Full Text Search,我有一个很奇怪的问题。。。 我已经用CONTAINSTABLE谓词编写了一个存储过程;差不多 SELECT dbo.MyTable.MyPK FROM dbo.MyTable INNER JOIN CONTAINSTABLE(dbo.MyTable, FullTextField, 'mysearch') AS tbl1 ON tbl1.[KEY] = dbo.MyTable.MyPK 如果使用SQL Server Management Studio运

我有一个很奇怪的问题。。。 我已经用CONTAINSTABLE谓词编写了一个存储过程;差不多

SELECT dbo.MyTable.MyPK
FROM   dbo.MyTable INNER JOIN
       CONTAINSTABLE(dbo.MyTable, FullTextField, 'mysearch') AS tbl1 
            ON tbl1.[KEY] = dbo.MyTable.MyPK
如果使用SQL Server Management Studio运行此SP,则一切正常

现在我已经准备了一个自动测试套件来测试我在重压下工作的有效性。。。 我使用不同的参数多次调用SP,每次调用次数都不相同,但问题是:如果启动测试套件,它将无法返回错误的结果(例如,1个结果,而我期望3个结果,等等……)。但是,如果我在调试模式下启动测试套件,单步执行测试代码,则不会发生错误。此外,如果捕获错误的结果并尝试重新执行给出错误结果的SP(只需在错误条件上放置一个条件断点并在visual studio上拖动执行指针…),则重新执行将返回正确的结果

我能做什么

有什么想法吗

非常感谢你的帮助


再见,cghersi

显然,对数据库运行相同的语句不会产生不同的结果,而所有其他语句都是相同的。有些事情正在改变

在单步执行代码时运行SQLProfile以确认:

  • 您认为要发送到数据库的SQL实际上正在访问数据库
  • 当您单步执行时,没有其他用户正在更新数据库

  • 确保在配置文件跟踪中可以识别正在使用的连接(一种简单的方法是通过设置应用程序名称来更改连接字符串)。当您单步执行代码时,请注意概要文件跟踪。将您在那里看到的SQL复制到SSMS中,并直接运行它以确认结果。在一天结束时,您应该能够将其隔离到SSMS中运行的原始TSQL,以找出问题所在。

    您是否在这些测试运行中操作全文索引?构建这些索引需要时间,并且在关联语句完成时不一定完全构建。单步/重新运行显然会为索引操作的完成提供更多的时间,这正是问题所在!!我在测试套件中增加了5秒钟的睡眠时间,现在一切都好了。非常感谢你!我相信,有一些系统视图可以查询,以发现索引是否是最新的——我不知道它们是否是最新的——但它们比在测试中包含固定的延迟要好。