SQL serverでOpen時にタイムアウト

SQL serverで接続をオープンするタイミングで、
「タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。」というエラーが発生します。
英語だと
「The timeout period elapsed prior to completion of the operation or the server is not responding.」
このエラーがでたら、CommandTimeOutを設定するとよいという意見が多いですが、実際はタイムアウトではなく、サーバーが応答していないと思われるので、意味がない場合が多いです。
アプリケーションを終了させて、もう一度起動させると復帰するので、接続プールを専有してしまっていると思われます。
どこで、接続プールのリークが起きているのかわからないので、接続のオープン、クローズの回数を減らすと改善することがあります。
あまりに、頻繁に接続のオープン、クローズを繰り返していると、何かの拍子に、接続プールがたまりすぎて、新たな接続を確立することができなくなるようです。
プーリングプロパティをオフにしても、うまくいかなかったので、データの読み込みが連続する場合、一度、オープンさせてから、連続処理をしてクローズさせるという方法に変えました。
クローズを忘れると面倒なことになりますが、24時間稼動させるようなプログラムの場合は、たぶん改善します。
同じ条件でも、上のエラーが出る場合と、出ない場合があるので、メモリを増設してみると改善する場合があるかもしれません。
posted by VB.NET+MSDE+ActiveReports at 00:25 | Comment(1) | TrackBack(0) | SQL Server
この記事へのコメント
VB.NET MSDE ActiveReports: SQL serverでOpen時にタイムアウト
Posted by michael kors uk at 2013年06月04日 15:40
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.sakura.ne.jp/tb/19625780