为什么某些连接需要很长时间,而其他连接工作很快?

时间:2011-11-11 19:13:35

标签: sql sql-server-2008 ado.net timeout

我有一个连接到SQL Server 2008实例的网页,尝试按顺序执行两个存储过程。第一个成功完成,然后第一个的值传递给第二个。此查询在大约110秒后超时。

如果我使用SQLDbx打开与sql实例的连接,并执行存储过程,它就会完成,但需要108秒(可疑接近于ADO版本的110)。

但是,如果我打开与SQL Server管理控制台(2008)的连接,并执行sproc,查询将在大约4秒后返回2行数据。

我怀疑某种驱动程序问题,但我不确定在哪里看。我希望某种配置修改(在服务器或ADO客户端上)可以修复此问题,但到目前为止,我通过谷歌搜索答案并没有提出任何有用的提示。

所以我转向你。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

ADO与stored procedures

有问题
  

查询分析器使用ARITHABORT设置为ON,ADO.Net在ARITHABORT设置为OFF的情况下运行。这会在过程高速缓存中导致2个查询计划。根据查询中的参数,这些计划可能不同,因此提供非常不同的查询性能   ...
  因此,当您遇到此问题时,最好使用WITH RECOMPILE提示   每次运行程序时编译执行计划。

尝试类似:
EXEC sp_MyTable1 'Parameter1', 'Parameter2' WITH RECOMPILE
并查看查询是否在ADO中运行得更好。

答案 1 :(得分:0)

两个存储过程都关闭了NOCOUNT吗?