2013-07-28 107 views
0

我們有一個使用SQL Server 2008 SP3 Express的.NET程序。程序和服務器都在同一臺機器上。它被寫入一個最初打開的連接,然後保持打開狀態。通常這工作正常。但是有時候程序會閒置好幾個小時,在這段時間內連接會關閉,程序會在下一次SQL訪問時炸彈。.NET SQL Server連接過早關閉

數據庫自動關閉參數已關閉。參數Pooling = False位於程序連接字符串中。在IIS中,對於每個應用程序池,已禁用了回收功能,並且空閒超時設置爲9000分鐘。

在目前爲止的測試中,這種情況通常不會發生,但有時候並非如此。

+0

什麼連接類型是您使用?我的建議是,您可以將ConnectionTimeout屬性設置爲0.其中,無限期建立連接。 – Smaug

+0

在需要使用它的方法內創建並打開一個新的連接對象幾乎總是更好,使用它然後關閉它。你爲什麼禁用Pooling? –

+0

試圖在字段中解決此舊版本問題;最新版本沒錯。由於IIS池管理器似乎正在關閉它,因此共享池被禁用。將嘗試ConnectionTimeout。 – blearyeye

回答

0

做的是檢查的連接狀態,並在必要時打開它最簡單的事情:

if(conn.State == ConnectionState.Closed)//Can't quite remember the exact syntax 
{ 
    conn.Open(); 
} 
//do DB stuff here. 
+0

它應該是'conn.State == ConnectionState.Closed' – Alejandro