sql server存储过程超时和查询没有超时,为什么?

时间:2010-02-24 19:51:28

标签: sql sql-server-2008 stored-procedures

我在sql server 2008上有一个存储过程,它除了一个int参数。它确实调用其他存储过程并具有嵌套的quires。

我面临的问题是当我从SQL服务器管理工​​作室运行该程序时,它不执行并超时。

如果我在另一个SQL服务器管理工​​作室中单独运行存储过程中的查询,它只执行所有罚款。

我无法调试此问题。我将非常感谢任何帮助/指点深入挖掘。

(我在执行proc或查询时使用相同的凭证)

提前致谢。

1 个答案:

答案 0 :(得分:8)

可能属于parameter sniffing

尝试将sproc参数分配给局部变量,并使用sproc中的查询中的那些参数。

e.g。

CREATE PROCEDURE [TestSproc]
    @Param1 INTEGER
AS
BEGIN
DECLARE @Param1_LOCAL INTEGER
SET @Param1_LOCAL = @Param1

SELECT Something
FROM Somewhere
WHERE SomeField = @Param1_LOCAL 
END