2011-12-14 225 views
2

我们正在运行windows 2008服务器IIS7 .NET 4.网站。.net 4连接到SQL服务器打开tcp端口问题

问题描述: IIS停止响应,因为SQL服务器已打开数百个tcp连接。我们运行了一个端口扫描器,可以看到它们来自本地IP地址。我们还有Profiler也在运行,但我们无法找到一种方法来确定哪些命令或过程打开了未正确关闭的连接。

SQL连接似乎使用“using”语句正确编码。在任何例外情况下,我们都会检查连接状态。随着游泳池或关闭它没有任何区别。杀死连接并重新启动iis可以清除问题。这是一个生产服务器,因此很难调试。我尝试了各种工具,但我们无法将tcp连接重新连接到源代码。所有的连接都有相同的时间戳,这是奇怪的。我们已经在Beta服务器上进行了调试,并显示了所有异常并未发现任何异常。

我想建议从哪里开始,代码被继承,网站很忙。

连接字符串是:

<add key="ConnectionStringSearch" 
    value="pooling=false;Connection Lifetime=90;Password=;Connect Timeout=999; 
      Persist Security Info=True;User ID=;Initial Catalog;Data Source=2; 
      Network Library=DBMSSOCN"/> 
+1

你能发布你的连接字符串吗?你也说“使用”正在使用,但包括DataReaders吗? – 2011-12-14 19:15:25

+0

对不起,让我澄清一下执行SQL连接的代码块是用ms指定的程序调用SQL服务器的。是数据读取器。 – user974308 2011-12-14 19:16:46

回答

0
0

如果包含 “应用程序名称=一些字符串” 在连接字符串中,然后在SQL Profiler中,有一列可以看到“Some String”作为应用程序的名称。

如果您在任何地方使用不同的应用程序名称,您的代码将打开一个连接,您可以看到哪些连接仍处于打开状态。它还将有效地禁用连接池,因为池会比较连接字符串以确定应该重新使用哪些连接。

话虽如此,它看起来像你当前的连接字符串格式不正确。你可能想先解决这个问题。

相关问题