超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
“超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小 ”
今天調試一個網站,出現了上面的這個問題,提示 超時時間已到XX 下面上圖
超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
解決方式如下:
<add name="ConnStr" connectionString="Data Source=.;Initial Catalog=dbName;Persist Security Info=True;User ID=sa;Password=pwd;Enlist=true;Pooling=true;Max Pool Size = 300; Min Pool Size=0; Connection Lifetime = 300;packet size=1000;" providerName="System.Data.SqlClient"/>
除了連接字符串的問題外,還要注意用完的鏈接要及時關閉 ?同時把網上看到的幾種解決方式一起放在此,都大致相同;
======================================================================
NET網站出錯信息如下:
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
源錯誤:
執行當前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關異常原因和發生位置的信息。 |
“/”應用程序中的服務器錯誤。
超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
可能原因如下:并發操作,Connection用后沒有關閉,或者因為DataReader連接獨占連接。
解決方法:
???????? 1 修改幾個關鍵頁面或訪問比較頻繁的數據庫訪問操作,使用DataAdapter和DataSet來獲取數據庫數據,不要使用DataReader。
2 在訪問數據庫的頁面上使用數據緩存,如果頁面的數據不是經常更新(幾分鐘更新一次)的話,使用Cache對象可以不用訪問數據庫而使用緩存中的內容,那么可以大大減少連接數量。
3 修改代碼,把使用Connection對象的地方都在Close()后面加上Dispose()調用。
4 建議對數據庫操作進行大的修改,建立自己的數據庫操作代理類,繼承System.IDisposable接口,強迫釋放資源,這樣就不會出現連接數量不夠的問題了。
華麗的分割線=====================華麗的分割線=========================================華麗的分割線
connectionStrings>
<add name="ConfigConStr" connectionString="Data Source=localhost;Initial Catalog=庫;uid=用戶名;pwd=密碼;Packet Size=8192;Max Pool Size=1000" providerName="System.Data.SqlClient" />
</connectionStrings>
將連接池數目改大點即可。如上述代碼
華麗的分割線=====================華麗的分割線=========================================華麗的分割線
=======================================================
“/ASP.Web”應用程序中的服務器錯誤。
--------------------------------------------------------------------------------
超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
這是個老問題了!你就查兩點:
一、看所有open的連接是否都close了。
二、如果訪問量很大,加上Max?? Pool?? Size=512這一句,當然這是要以損失系統性能為代價的!
這樣以后一定可以解決你的問題!
解決方案一
我 想原因可能是并發操作。DataReader是獨占連接的,就是說你的程序可能設計上有問題。比如說最大連接設100,假設有100個人同時使用 DataReader正在讀取數據庫內容,那么當第101人讀取的時候,連接池中的連接已經沒有了,就會出現上面的錯誤。DataReader是獨占連接 的,每個DataReader都要占用一個連接。當然這個情況是偶爾出現的,所以會很長時間出現一次,因為只有同時有超過連接池最大連接數量的并發操作才 會發生。而且你加大并發數量只能暫時緩解問題,如果你加大到200個并發連接,如果有201 人同時操作怎么辦?你說了你使用Connection對象的Close()方法,這是不行的,因為Close()方法僅僅是關閉連接,但這個連接沒有釋 放,還是被這個對象占用,要釋放必須使用Connection的Dispose()方法顯式釋放連接才可以,否則這個對象占用的連接只能等到垃圾收集的情 況下才能被釋放。這種情況肯定會出現“超時時間已到”的錯誤。
解決方法:
1 修改幾個關鍵頁面或訪問比較頻繁的數據庫訪問操作,使用DataAdapter和DataSet來獲取數據庫數據,不要使用DataReader。
2 在訪問數據庫的頁面上使用數據緩存,如果頁面的數據不是經常更新(幾分鐘更新一次)的話,使用Cache對象可以不用訪問數據庫而使用緩存中的內容,那么可以大大減少連接數量。
3 修改代碼,把使用Connection對象的地方都在Close()后面加上Dispose()調用。
4 建議對數據庫操作進行大的修改,建立自己的數據庫操作代理類,繼承System.IDisposable接口,強迫釋放資源,這樣就不會出現連接數量不夠的問題了。
解決方案二
解決方法(*):WEB.config 里面:在數據庫連接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一勞永逸。
解決方案三
估計是連接(Connection)對象沒有Close。倒是不必Dispose,而DataReader用完后應該關閉,但不關閉也沒問題,只是不關閉的話此連接對象就一直不能用,只要你最終關閉了連接對象就不會出問題。
連接對象在Open后的操作都放在try塊中,后面跟一個finally塊:conn.Close();
錯誤:?? 3154一般是由于恢復數據庫備份時指定的數據庫名和原有數據庫中數據庫相同引起的
你指定一個不易重復的名字,
或者在恢復時指定選項:覆蓋現存數據庫
本人在將SQL2000數據庫導入SQL2005出錯,錯誤信息如下:
還原 對于 服務器“EDWARD//TRACY”失敗。 (Microsoft.SqlServer.Smo)
有關幫助信息,請單擊: http://go.microsoft.com/fwlink?Prod...er&LinkId=20476
------------------------------
其他信息:
執行 Transact-SQL 語句或批處理時發生了異常。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
備份集中的數據庫備份與現有的 /''foodgood/'' 數據庫不同。
RESTORE DATABASE 正在異常終止。 (Microsoft SQL Server,錯誤: 3154)
今天我準備把sql2000 的備份數據庫 sp.bak 還原在sql2005 上 (因為課堂上用的是sql2000 而我自己電腦里裝的是sql2005 )遇到了點麻煩。就是象sql2000 一樣操作還原時出現了點問題。說不能還原,最后找到了點方法終于搞定。
1,在sql2005上新建一個數據庫比如:商品
2,選擇要還原的 sql2000備份文件
3,這里很重要,選中“覆...”看圖
sql2000 備份的數據庫還原到sql2005后,選擇“數據庫關系圖”提示:此數據庫沒有有效所有者,因此無法安裝數據庫關系圖支持對象。若要繼續,請首先使用“數 據庫屬性”對話框的“文件”頁或? ALTER? AUTHORIZATION? 語句將數據庫所有者設置為有效登錄名,然后再添加數據庫關系圖支持對象。
解決方法如下:
1、設置兼容級別為90(2005為90)
USE? [master]
GO
EXEC? dbo.sp_dbcmptlevel? at dbname=''數據庫名'',? @new_cmptlevel=90
GO
或是選責你還原的數據庫,點右鍵,選屬性->選項->兼容級別,選擇sqlserver2005(90) 然后確定,
這時,你在該數據庫下展開“數據庫關系圖”節點時會有個提示,"此數據庫缺少一個或多個使用數據庫關系圖所需的支持對象,是否創建",選擇“是”即可。
2、通過以上的方法操作,如果問題依然存在的話,按下列方法繼續
選擇你的數據庫,然后選擇"安全性"->"用戶",選擇dbo,打開屬性頁,如登錄名為空的話,新建查詢,然后
use [你的數據庫名]
EXEC?? sp_changedbowner?? ''sa''
執行成功后,你再選擇"數據庫關系圖"節點,時提示 “此數據庫缺少一個或多個使用數據庫關系圖所需的支持對象,是否創建",選擇“是”即可。 就可以看到原先建的關系圖了。
1、 對Table中的詳細內容,以不同的顏色間隔開相鄰的兩行。
A:選擇Table的Detail行,選擇屬性中的BackgroundColor,值選擇表達式,輸入:=iif(RowNumber(Nothing) Mod 2, "White", "Beige")。
2、設置每面顯示Table表頭或表尾
A:選擇Table Header或Table Footer,將屬性中的RepeatOnNewpage設為True dot
3、在每頁都顯示放入的圖片或標題頭等信息。
A:只須在Table Header中加行數,把你要顯示的內容放到單元格中,然后再按第二條方式設置后就可以了。
============================================================================
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!