目前我遇到了很多服務器進程問題(從sp_who2中看到)「睡眠」,而不僅僅是,完成(被刪除),當我連接到我的MSSQL數據庫,調用存儲過程,獲取一些數據和然後關閉連接。如何避免MSSQL中的「睡眠」進程?
在C#/ .NET中連接到MSSQL數據庫,調用存儲過程,從存儲過程(數據讀取器)檢索數據,然後關閉連接的最佳方式是什麼?
有沒有辦法關閉/處置,使「睡眠」進程被殺害?
它與我創建新的SqlConnections,打開它們並關閉他們有什麼關係嗎?
我的流程如下:
請求發生:
- 我創建了一個新的SqlConnection實例連接到我的MSSQL數據庫。
- 我調用一個存儲過程,檢索數據並將其呈現給用戶。
- 我關閉連接
.Close();
- 我重複所有這些步驟爲每個請求。請求每5-10秒發生一次。 (有時更慢,有時更快)
對不起如果這個問題缺少一些細節,但我希望這足以得到一些有用的答案。
謝謝!
這是正常現象 - 連接池和其數量始終保持可用,以最大限度地減少設置物理連接的開銷。關閉連接並不會真的關閉它,它只是讓它再次可用於池。你遇到的是什麼「問題」?活動會話的數量是否真的在增加,或者您是否認爲存在錯誤,因爲這些會話都存在?您的一般用法是正確的,但不是明確調用'.Close()',而是''使用':即使面對異常,這也是安全的。 –
@JeroenMostert我會張貼它作爲答案,添加一個鏈接到msdn文檔的主題https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx – bradbury9
我的假設有些事情是錯誤的,就是當很多「睡眠」進程中,數據庫變得越來越慢,當我試圖清除這些「睡眠」進程時,數據庫變得更快。這只是一個假設嗎? –