設定:
C# で .NET WinForms アプリケーションを作成して、テクニカル サポート担当者が製品の SQL Server 2005 データベースに対して一般的なタスクを簡単に実行できるようにしています。アプリケーションは ADO.NET ( SqlConnection
) を使用してデータベースに接続しています。このアプリケーションを開発する際の懸念の 1 つは、タスク (クエリ) が開始されるたびにデータベースに接続/再接続するオーバーヘッドを最小限に抑えることでした。私の理解では、このオーバーヘッドの主な理由は、データベースにAutoCloseがあるためです。プロパティを「True」に設定します。これを変更したいのですが、残念ながら私の管理下にはありません。また、データベース接続の作成には何らかのオーバーヘッドが伴うことも認識しています。私は、アプリケーションのライフサイクルを通じて単一の接続を維持するアプリケーションの実用的な実装を持っていました (以前に閉じられていない限り)。その後、ADO.NET での接続プールに関する MSDN の記事を偶然見つけました。
記事 (およびその他の質問/回答here、here、およびhere ) を読んだ後、アプリケーションがそのSqlConnection
オブジェクトを適切に破棄した場合でも、ADO.NET 接続プールはデータベースへの接続を維持するようです。接続はプールに保持され、一定期間アイドル状態になるか、切断されるまで再利用できます。SqlConnection
したがって、アプリケーションで単一の接続を維持するという私の作業は不必要であり、必要になるたびに単純に を作成/破棄するよりも確実に危険に思えます。
質問:
"AutoClose" が "true" に設定された SQL Server データベースで ADO.NET 接続プールを使用すると、どのような影響がありますか?
接続プーリングが舞台裏でどのように機能すると信じているかを説明すると、単純化しすぎている可能性があることは承知していますが、それはさておき、私の理解は正確ですか? そうでない場合、どこを修正する必要がありますか?