逾時時間已到。在從池中擷取串連之前逾時時間已過。出現這種情況可能是因為所有池串連都已被使用並已達到最大池大小。
解決辦法
1.在代碼裡面,把未關閉的串連關閉
2.擴大共用池,方法如下:
解決方案可以是修改串連池的串連生存期,因為預設值是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的值,那麼串連將從池中被移走。
問題的原因是與資料庫的串連沒有顯示關閉,而等系統自動回收是要時間的.解決的方法是改變串連池的大小.在連接字串的後面加上以下代碼:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000
packet size參數取512到32767中的任一整數值