我遇到了一个似乎与某个Web服务器配置相关的问题,并导致查询随机执行很长时间。该应用程序是使用旧的普通ASP和ADODB连接创建的。使用ADODB连接运行查询随机执行需要很长时间
的情况去如下:
- 有在处理此连接被用于执行对SQL Server查询每个HTTP请求
- 年初在脚本中打开一个连接,那位于一个单独的盒子上。使用conn.Execute。连接没有被关闭之后
- 通常有几个在单个ASP页几十conn.Execute的
所有一直很好,直到最近,当一些conn.Execute的开始采取更长的执行时间,完全随机。
- 区别在于例如15ms的正常运行时间与2000毫秒的SQL Server端执行时间长
- ,探查器不显示较长的查询执行时间,因此必须有东西挡住了conn.Execute要求
当一个正确的做法在每次执行conn.Execute后关闭连接,问题就会消失。但是,正如我之前所说的,直到最近,所有这些工作一直都是完美无缺的。这个网络应用程序是一个相当大的应用程序,重写它关闭和正确地重新打开连接将需要一些时间。我需要一个短期解决方案。
我的猜测是它可能与连接池大小有关,但这不是ADO.NET,因此我不确定连接池问题是否应该纳入考虑范围。在SQL Server端,对服务器的并发连接数没有限制。
我需要一些提示。集思广益可能的想法。
提示:我最终发现,当通过系统DNS(ODBC,TCP/IP传输)建立连接时,问题就在那里。当我强制连接字符串中的SQLNCLI提供程序(使用Provider = SQLNCLI)时,问题就消失了。很好,但为什么它首先发生......? –
是否有最近的补丁或更新应用于服务器? – Jesse
是的,有。这是由远程位置的第三方托管和管理的专用盒子。好点,忘了在我原来对问题的描述中加上这个,我以为我做到了。 –