“超時時間已到…所有池連接都已被使用並已達到最大池大小”問題

問題描述:超時時間已到。在從池中獲取連接之前超時時間已過。出現這種情況可能是因爲所有池連接都已被使用並已達到最大池大小。

問題分析:
問題的原因是與數據庫的連接沒有顯示關閉,而等系統自動回收是要時間的.

解決方案:

1.在代碼裏面,把未關閉的連接關閉
2.擴大共享池,方法如下:
2.1修改連接池的連接生存期
因爲默認值是60秒,即連接從應用程序被釋放後可以在池中保存的時間。
  如果是ODBC的話
  
則可以在ODBC Data Source Administrator中手動更改,該程序位於“Start”菜單中的“Programs”->"Adminstrative Tools"(中文名:管理工具)下,或從"Control Panel"(中文名:控制面板)中打開“ODBC Data Source Administrator”(ODBC數據源管理器),再選擇“Connection Pooling”(連接池)選項卡,雙擊驅動程序中的“SQL Server”,選擇“Pool Connetions to this drive”(使用池連接該驅動程序),把下面的時間60秒改的大一點,例如120。
  如果是SqlConnection的共享連接
  
則爲ConnectionString屬性Connection Lifetime數值名稱指定一個值,該值默認情況下是0,表示連接永遠不會從池中被自動移走。如果指定一個不同的值,那麼一旦連接被返回到池中,該值將和連接的創建時間及當前時間進行比較。如果生存期超過了Connection Lifetime的值,那麼連接將從池中被移走。

2.2改變連接池的大小
在連接字符串的後面加上以下代碼:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章