我在sql server 2008上有一个存储过程,它除了一个int参数。它确实调用其他存储过程并具有嵌套的quires。
我面临的问题是当我从SQL服务器管理工作室运行该程序时,它不执行并超时。
如果我在另一个SQL服务器管理工作室中单独运行存储过程中的查询,它只执行所有罚款。
我无法调试此问题。我将非常感谢任何帮助/指点深入挖掘。
(我在执行proc或查询时使用相同的凭证)
提前致谢。
答案 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