我正在開發一個混淆工具,它主要是在專用SQL服務器(僅用於該工具)上檢索數據庫,檢索記錄,執行某些數據操作並更新這些記錄。這一切都是用LINQ to SQL完成的。我正在使用任務和並行循環來同時運行儘可能多的更新。所有的SQL都是從同一個連接字符串完成的。最初我使用了默認的最大連接池大小(100),假設它足夠了。看起來運行了幾個小時後(因爲這個工具正在更新數百萬條記錄),它開始嘔吐,因爲它無法建立連接。在查看連接池之後,我注意到我已經達到了100的限制。因此我將限制增加到了200.儘管我的一個進程(沒有提到這個過程在幾個進程中運行)結束大約3小時後失敗。連接池似乎沒有被過度使用,因此我只是搔了搔腦袋。我已經在我的代碼中檢查了很多區域,以確保所有連接正在處理,它們是。我甚至將所有連接代碼移動到一箇中心位置,所以現在代碼只能建立一個位置的連接。爲了排除連接池最大化的想法,我想使用C#查詢池以在嘗試連接時查看異常的限制。這可能嗎?框架是否有代碼來做到這一點,或者我會被要求運行一個SQL語句來確定這個嗎?有沒有辦法從C#代碼檢查池中的連接?
供參考:我使用4.0和SQL 2008.
在此先感謝!