私はC#TCPサービスをプログラミングしています。このサービスでは、クライアントはTCPサーバーに接続して、データを取得または書き込みます。
問題:
午前中にデータベースサーバーを再起動すると、サービスはデータベースへの接続を失います。次のリクエストがシステムに届くと、データベース接続はなくなります。
誰かが私に何ができるか知っていますか?
再起動後にデータベースサーバーを保持または再接続するにはどうすればよいですか?
私はC#TCPサービスをプログラミングしています。このサービスでは、クライアントはTCPサーバーに接続して、データを取得または書き込みます。
問題:
午前中にデータベースサーバーを再起動すると、サービスはデータベースへの接続を失います。次のリクエストがシステムに届くと、データベース接続はなくなります。
誰かが私に何ができるか知っていますか?
再起動後にデータベースサーバーを保持または再接続するにはどうすればよいですか?
あなたの場合、すべてのサービスの有効期間中、SQL データベースへの SqlConnection を開いたままにしない方がよいと思います。
代わりに、SqlConnection オブジェクトをインスタンス化して開き、クエリを処理してから閉じます。これにより、SQL サーバーの内部接続プールメカニズムが使用されます。
たとえば、接続を開いて閉じるコードのブロックで各クエリを囲むことができます。
using(var cn = new SqlConnection(csString))
{
cn.Open();
... // your query
cn.Close();
}
このようにして、データベースが毎晩再起動すると、透過的になります。