超時時間已到,可是還沒有從池中獲取鏈接

 

「/ASP.Web」應用程序中的服務器錯誤。
-------------------------------------------------------------------------------- sql

超時時間已到。超時時間已到,可是還沒有從池中獲取鏈接。出現這種狀況多是由於全部池鏈接均在使用,而且達到了最大池大小。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中致使錯誤的出處的詳細信息。 數據庫

異常詳細信息: System.InvalidOperationException: 超時時間已到。超時時間已到,可是還沒有從池中獲取鏈接。出現這種狀況多是由於全部池鏈接均在使用,而且達到了最大池大小。 緩存

這是個老問題了!你就查兩點: 
  1、看全部open的鏈接是否都close了。 
  2、若是訪問量很大,加上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接口,強迫釋放資源,這樣就不會出現鏈接數量不夠的問題了。 sqlserver

解決方案二 性能

解決方法(*):WEB.config 裏面:在數據庫鏈接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一勞永逸。 ui

解決方案三 spa

估計是鏈接(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  語句將數據庫全部者設置爲有效登陸名,而後再添加數據庫關係圖支持對象。 
    
解決方法以下:
一、設置兼容級別爲90(2005爲90)
USE  [master]
GO
EXEC  dbo.sp_dbcmptlevel  at dbname='數據庫名',  @new_cmptlevel=90
GO  

或是選責你還原的數據庫,點右鍵,選屬性->選項->兼容級別,選擇sqlserver2005(90) 而後肯定,

      這時,你在該數據庫下展開「數據庫關係圖」節點時會有個提示,"此數據庫缺乏一個或多個使用數據庫關係圖所需的支持對象,是否建立",選擇「是」便可。

二、經過以上的方法操做,若是問題依然存在的話,按下列方法繼續

選擇你的數據庫,而後選擇"安全性"->"用戶",選擇dbo,打開屬性頁,如登陸名爲空的話,新建查詢,而後

use [你的數據庫名]
EXEC   sp_changedbowner   'sa'

執行成功後,你再選擇"數據庫關係圖"節點,時提示 「此數據庫缺乏一個或多個使用數據庫關係圖所需的支持對象,是否建立",選擇「是」便可。 就能夠看到原先建的關係圖了。

一、 對Table中的詳細內容,以不一樣的顏色間隔開相鄰的兩行。

A:選擇Table的Detail行,選擇屬性中的BackgroundColor,值選擇表達式,輸入:=iif(RowNumber(Nothing) Mod 2, "White", "Beige")。

二、設置每面顯示Table表頭或表尾

A:選擇Table Header或Table Footer,將屬性中的RepeatOnNewpage設爲True dot

三、在每頁都顯示放入的圖片或標題頭等信息。

A:只須在Table Header中加行數,把你要顯示的內容放到單元格中,而後再按第二條方式設置後就能夠了。

 
相關文章
相關標籤/搜索