接続の削除
接続プーラーは、長時間アイドル状態になった後、またはサーバーとの接続が切断されたことをプーラーが検出した場合に、プールから接続を削除します。
サーバーとの通信を試みた後にのみ、切断された接続を検出できることに注意してください。サーバーに接続されなくなった接続が見つかると、無効とマークされます。
無効な接続が接続プールから削除されるのは、それらが閉じられるか再利用されるときだけです。
消えたサーバーへの接続が存在する場合、接続プーラーが切断された接続を検出していないとしても、その接続をプールから引き出すことができます。
これが当てはまるのは、接続がまだ有効であることを確認するオーバーヘッドによって、サーバーへの別のラウンドトリップが発生することにより、プーラーを使用する利点がなくなるためです。
これが発生すると、接続を使用する最初の試行は、接続が切断されたことを検出し、例外がスローされます。
基本的に、表示されているのは最後の文の例外です。
接続は接続プールから取得されます。アプリケーションは、物理接続が失われたことを認識していません。物理接続がまだ存在していることを前提として、接続の使用が試みられます。
そして、あなたはあなたの例外を取得します。
これにはいくつかの一般的な理由があります。
- サーバーが再起動されました。これにより、既存の接続が閉じます。
この場合、通常は次の場所にあるSQL Serverログを確認してください:C:\ Program Files \ Microsoft SQL Server \\ MSSQL \ LOG
起動のタイムスタンプが非常に新しい場合は、これがエラーの原因であると考えられます。このタイムスタンプを例外の時間と関連付けるようにしてください。
2009-04-16 11:32:15.62サーバー 'SQL Serverメッセージをファイル' C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG 'に記録します。
- 使用中のSPIDが誰かによって停止されました。
ここでも、SQL Serverログを確認します。キルを見つけた場合は、このタイムスタンプを例外の時間と関連付けてみてください。
2009-04-16 11:34:09.57 spidXXプロセスID XXはホスト名xxxxx、ホストプロセスID XXXXによって強制終了されました。
- フェイルオーバーが(たとえばミラーセットアップで)再び発生した場合は、SQL Serverログを確認してください。
フェイルオーバーがある場合は、このタイムスタンプを例外の時刻と関連付けてみてください。
2009-04-16 11:35:12.93 spidXXミラーリングされたデータベース「」は、フェイルオーバーのために「PRINCIPAL」から「MIRROR」にロールを変更しています。