2011-04-25 35 views
1

我在MS SQL Server中有一个相当复杂的Strored Procedure,它查询大型数据库。我做了很多优化,所以当我用SSMS的EXECUTE调用它时,它会在1秒内运行,这足够了。通过LINQ或SqlCommand缓慢调用SP,但没有执行

问题是,当我使用LINQ或SqlCommand从ASP.NET 3.5调用它时,生产服务器上需要几分钟时间,而服务器负载并不高。

我认为这与配置有关,因为开发服务器按预期运行。

生产服务器具有SQL Express 2008 sp2,开发服务器具有SQL Express 2005.我的开发机器具有SQL Express 2008 R2并且性能良好。

什么/我该在哪里检查?

ty!

+0

您是否尝试过使用SQL Server Profiler来看看SQL实际上被发送到生产服务器?另外,您是否比较了开发和生产中相同存储过程的查询计划? – R0MANARMY 2011-04-25 22:29:55

+0

@ R0MANARMY: 审核登录; RPC:Complete(Duration:1231); Audit Logout(Duration:1236); 测试.aspx只有一个gridview,没有其他和codebehind只有sp调用,并运行了近3分钟,如果我设置足够高的超时。 – FTeR 2011-04-26 11:40:28

+0

如果您从SSMS运行查询来反对生产,它仍然在1分钟内完成? – R0MANARMY 2011-04-26 12:42:22

回答

1

用SQL事件探查器检查它。 LINQ to SQL很可能会受到Select n + 1问题的困扰。

在这里有一个快速浏览一下为: http://l2sprof.com/Learn/Alerts/SelectNPlusOne

+0

不幸的是,我在单独的页面中测试了sp调用,并且仍然很慢。它返回整数列表。 – FTeR 2011-04-26 08:10:08