【发布时间】:2011-08-08 18:15:11
【问题描述】:
我有一个通过 SSMS 在 5 秒内执行的 SP
当通过 LINQ-to-SQL excel 加载项执行同一个 SP 时,它会在 30 秒后超时(对同一个 SP 的简单查询需要很长时间,但会返回结果)
然后我更改了 SP,以便将所有输入参数重新分配给 SP 内的新本地参数。这使得 SP 在 SSMS 中运行时间为 36 秒(所以这就是为什么 SSMS 开始如此之快的原因)
所以我猜 SQL 服务器没有对我的 LINQ-to-SQL 查询使用参数嗅探?
所以,我的问题是,有什么方法可以让 SP 在 LINQ-to-SQL 中的速度与在 SSMS 中一样快(通过它的参数嗅探)
【问题讨论】:
-
我假设您已经看过一些显而易见的事情,例如确保您的 LINQ-to-SQL 指向正确的服务器,并且您正在测试 SSMS 和 LINQ 中的相同参数...当您的 proc正在运行,当您运行 sp_who2 时,您看到的 spid 是什么?是不是被屏蔽了?
-
我会使用分析器并检查这两种情况(SSMS 和 Linq2SQL)的执行计划,也许你能找到差异。如果在这两种情况下,参数都相同,等等。不应该有区别。如果参数不同,SQLServer 可能有一个错误的执行计划。但没有更多细节就很难说。
标签: sql linq-to-sql stored-procedures timeout