我有一個客戶端應用程序,通過using子句連接到數據庫。連接池清除時間...我真的不知道該怎麼稱呼它:)
using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
sqlConn.Open();
//SQLcommand codes
}
我知道這將確保sqlConnn.Close()和sqlConn.Dispose()被調用。然而,運行該代碼之後的每個客戶端我仍然看到一些SPID上的SQLServer在睡眠模式,例如:
60 0睡眠SA AVENGER 0 Xmark命令等待0 61 0睡眠SA AVENGER 0 Xmark命令等待0 62 0睡覺SA AVENGER 0 Xmark AWAITING命令0
我知道這是因爲我在我的連接中使用連接池,這就是爲什麼它們處於睡眠模式並在再次命令中重新使用。如果我沒有對它們做任何事情,我會發現隨着時間的推移(如10分鐘左右之後),這些過程會被刷新。
我的問題是:是否有從C#或SQLServer2008的設置,將這次減少到2分鐘左右?
我面對的問題是,如果我有很多客戶端在短時間內連接到數據庫,我的最大池連接限制會很快達到。我意識到我可以通過增加連接池來解決這個問題,但我認爲這就像是從一個較小的一個升級到一個更大的一個碗,以防止泄漏的屋頂中的水。
我在MSDN上搜索並遇到了ClearPool(),這將讓我隱式地從池中刪除SPID,但我認爲這打破了連接池的目的,它不是很乾淨。
任何幫助,非常感謝。
+1:如果數據訪問層中的類也實現了'IDisposable',所以它也可以封裝在'using'塊中,這種解決方案的效果更好。 – 2012-02-28 17:46:43