- PR -

DB接続エラーを繰り返すと接続できなくなる

投稿者投稿内容
たしろう
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2005-04-11 14:31
初めまして。初めて投稿させていただきます。

5秒間隔でDB接続し、データが更新されていないかを
チェックするアプリケーションを作成しています。

この状態でDBサーバを再起動させると、クライアントは
続エラーを起こします(「SQL Server が存在しないか、
アクセスが拒否されました。」)。これは当然です。

しかし、再起動が完了しても繰り返し接続エラーのままです。
何故でしょうか?

DBへの接続はその度に行っています。


動作環境は以下の通りです。

DBサーバ :WindowsServer2003 + SQLServer2000
クライアント:WindowsXP Professional SP2

どなたか教えてください。よろしくお願いします。
たしろう
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2005-04-11 14:42
補足です。

以下の場合は接続復帰します。

@LANケーブルを抜く
A接続エラーとなる
BすぐにLANケーブルを差す
C接続は成功する

何度か失敗した場合に駄目なのでしょうか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-04-11 15:03
はずしているかもしれませんが、コネクションプーリングが関係しているのではないでしょうか?
コネクションプーリングを無効にするとどうなりますか?

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconconnectionpoolingforsqlservernetdataprovider.asp
たしろう
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2005-04-11 15:45
burton999さん、ありがとうございます。
コネクションプーリングを無効にしたら接続復帰できました。

コネクションプーリングについては、あまり知識がないので
この機会に調べてみます。

ありがとうございました!
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-04-11 16:11
ちなみにコネクションプーリングを無効にすると
パフォーマンスがかなり悪化する可能性がありますので
コネクションプーリングを理解して慎重に検討してください。。。
通常、無効にすることはしません。
たしろう
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2005-04-11 18:29
やはりパフォーマンス的に問題がありました。
接続プーリングをfalseに設定すると、接続に30秒以上かかってしまいます。

どなたか、よい対処方法をご存知でしたら教えてください。


よろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-04-11 18:50

紹介して貰ったURLの「接続の削除」の項は読みました?動作検証したわけではないのですが、「既に存在しないサーバーへの接続が存在する場合は・・・」のところを読む限り、通常であればその後接続は破棄され、自動的に新しい接続が作られるはずです。もし破棄されないのであれば「プールへ返す必要があります。」の辺りが守られていないのではないでしょうか?

あるいは、接続最大数のピークと通常時の差が大きいのではないでしょうか?ピーク時に沢山のConnectionがPoolされており、切断されたPoolを一通り破棄するのに時間がかかっているとか・・・。Connection Lifetimeを適当に短くすると、大幅に改善したりしませんか?
たしろう
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2005-04-12 09:43
解決しました。
Connection Lifetimeを短くすることで対応できました。

ありがとうございます。助かりました!

スキルアップ/キャリアアップ(JOB@IT)