セットアップのための含意:ADO.NETの接続プールとAUTOCLOSE = Trueの
は私が当社の技術サポートの人々が簡単に私たちの製品のSQL Server 2005のデータベースに対して一般的なタスクを実行できるようにするためにC#で.NET WinFormsのアプリケーションを作成しています。アプリケーションは、ADO.NET(SqlConnection
)を使用してデータベースに接続しています。このアプリケーションの開発における1つの懸念は、タスク(クエリ)が開始されるたびにデータベースへの接続/再接続のオーバーヘッドを最小限に抑えることでした。私の理解からこのオーバーヘッドの主な理由は、AutoCloseプロパティが "True"に設定されているデータベースによるものです。私はこれを変更したいですが、残念ながらそれは私のコントロール下にありません。私はまた、データベース接続の作成には関係なくいくつかのオーバーヘッドが必要であることを認識しています。私は、アプリケーションのライフサイクルを通じて(以前は何らかの形で閉じていない限り)単一の接続を維持していたアプリケーションの実装を行っていました。私はconnection pooling in ADO.NETのMSDN記事を見つけました。
記事(および他の質問/回答here、hereとhere)を読んだ後には、ADO.NET接続プールは、私のアプリケーションが適切にそのSqlConnection
オブジェクトを処分した場合でも、データベースへの接続を維持することが表示されます。接続はプール内に保持され、一定期間アイドル状態になるか、またはそれ以外の場合は再使用されるまで再使用可能になります。したがって、私の仕事は、アプリケーション内の単一の接続が不要と単にSqlConnection
それが必要とされるたびの処分/作成するよりも確かに多くの危険なようで維持します。
質問:
「真」に設定された「オートクローズ」とSQL ServerデータベースとのプーリングADO.NET接続を使用するときに存在している何の意味?私は私が接続プーリングはさておき、舞台裏で動作しますが、その信じている方法を説明したときに、私はoversimplifyingすることができる実現
、私の理解は正確ですか?そうでなければ、どこで修正が必要か?
は、私は完全にAUTOCLOSEをオフにする必要があることに同意するものとします。残念ながら、私はその決定に関してコントロールや影響力がありません。 – dcharles
は私が何をするのではなく、undomented行動をプールに依存しているでしょう(すなわち。何です* *接続が彼のプールTOT引退しているデータベース現在)、私はもっぱらこの目的のために、オープンアプリで非常に明示的な接続を維持したいです。誰かが「影響力とコントロール力」を持っていると言われると、誰かが親愛なるデータベースを開いたままにして、フォークとトーチであなたを追いかけることに気付くかもしれません。 –
ご協力ありがとうございます! – dcharles