我正在編程一個C#TCP服務。在此服務中,客戶端連接到我們的TCP服務器 以獲取或寫入一些數據。C#持久連接到SQL Server
問題:
早上我們重啓我們的數據庫服務器和服務失去與 數據庫的連接。當下一個請求進入我們的系統時,不再有數據庫連接。
有人知道我能做什麼嗎?
如何在重新啓動後保持或重新連接到數據庫服務器?
我正在編程一個C#TCP服務。在此服務中,客戶端連接到我們的TCP服務器 以獲取或寫入一些數據。C#持久連接到SQL Server
問題:
早上我們重啓我們的數據庫服務器和服務失去與 數據庫的連接。當下一個請求進入我們的系統時,不再有數據庫連接。
有人知道我能做什麼嗎?
如何在重新啓動後保持或重新連接到數據庫服務器?
在你的情況下,我認爲最好不要在所有的服務生命期內維護一個到sql數據庫的開放SqlConnection。
取而代之的是,實例化一個SqlConnection對象,打開它,處理您的查詢,然後關閉它:它將使用SQL Server的內部機制connection pooling。
例如,可以在其打開和關閉的連接的代碼塊包圍每個查詢:
using(var cn = new SqlConnection(csString))
{
cn.Open();
... // your query
cn.Close();
}
通過這種方式,當重新啓動數據庫夜間,這將是透明的爲您服務。
每次您需要在數據庫上執行某些操作時,請創建並打開一個新連接。爲什麼你要保持一個持久連接?它解決了什麼要求? – slugster 2013-02-25 13:41:52
我認爲它需要更多時間來重新連接。但是現在我發現,由於連接池的原因,它不會產生很大的性能差異。 – MjeOsX 2013-02-25 14:42:47