我有一个连接到SQL Server 2008实例的网页,尝试按顺序执行两个存储过程。第一个成功完成,然后第一个的值传递给第二个。此查询在大约110秒后超时。
如果我使用SQLDbx打开与sql实例的连接,并执行存储过程,它就会完成,但需要108秒(可疑接近于ADO版本的110)。
但是,如果我打开与SQL Server管理控制台(2008)的连接,并执行sproc,查询将在大约4秒后返回2行数据。
我怀疑某种驱动程序问题,但我不确定在哪里看。我希望某种配置修改(在服务器或ADO客户端上)可以修复此问题,但到目前为止,我通过谷歌搜索答案并没有提出任何有用的提示。
所以我转向你。
有什么想法吗?
答案 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吗?