2011-09-25 101 views
2

我遇到了一个似乎与某个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端,对服务器的并发连接数没有限制。

我需要一些提示。集思广益可能的想法。

+0

提示:我最终发现,当通过系统DNS(ODBC,TCP/IP传输)建立连接时,问题就在那里。当我强制连接字符串中的SQLNCLI提供程序(使用Provider = SQLNCLI)时,问题就消失了。很好,但为什么它首先发生......? –

+1

是否有最近的补丁或更新应用于服务器? – Jesse

+0

是的,有。这是由远程位置的第三方托管和管理的专用盒子。好点,忘了在我原来对问题的描述中加上这个,我以为我做到了。 –

回答

0

可能与通过DNS解析连接字符串中的主机名有关 - 是否尝试将IP地址放在连接字符串中而不是主机名?

+0

在连接字符串中更改它会覆盖使用系统DSN条目,但不,我没有更改DSN使用IP而不是服务器名称,但我不认为这将是问题的原因在这里,因为两个盒子都在同一个网络中,解析主机名应该被缓存,否则不应该? –

+0

主机名取自/ etc/hosts文件,因此不幸的是,这与解析IP地址无关。 –