0
我有一個長時間運行的.NET進程(一個Windows服務),它與SQL Server進行通信。每次我想要使用它時,是否應該創建一個全新的SqlConnection,或者每次嘗試重新打開一個現有連接?
本來,我在服務啓動時打開了一個連接,並且保持打開。但是,偶爾會出現網絡呃逆或SQL Server重新啓動會中斷連接,我的進程不知道這一點。它會試圖繼續針對關閉的連接拋出SQL。
試圖保持這樣的開放連接顯然是我試圖太聰明。所以,做我:
- 創建(開放的)的新
SqlConnection
對象每次 - 創建一次在服務啓動時連接,每次只是試圖重新打開連接
對於後者(#2),我有這樣的代碼:
if(connection.State != ConnectionState.Open)
{
connection.Open();
}
我只有這樣做,因爲連接已經存在。如果我每次創建新連接(#1),顯然它會關閉,我需要打開它。
我希望做的是利用SQL連接池實際上而不是每次打開一個新的連接,但只是讓連接池管理 - 當我有一個連接池時給我一個開放的連接,或者在沒有時打開一個新的。 (#1),或者如果我只是重用連接並嘗試每次重新打開它(#2),要實現這一點,是否重要?
可能的重複[最好是傳遞一個開放的SqlConnection作爲參數,或在每個方法中調用一個新的?](http://stackoverflow.com/questions/9807268/is-it-best-to-通的開-的SqlConnection作爲一種參數或 - 呼叫-A-新酮在-EA) –