2011-12-14 208 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」作爲應用程序的名稱。

如果您在任何地方使用不同的應用程序名稱,您的代碼將打開一個連接,您可以看到哪些連接仍處於打開狀態。它還將有效地禁用連接池,因爲池會比較連接字符串以確定應該重新使用哪些連接。

話雖如此,它看起來像你當前的連接字符串格式不正確。你可能想先解決這個問題。

相關問題