非常に.. ばかげた問題。
SQLAnywhere12 への呼び出しは、c# コードから行われます。
- 利用可能なデータベースへのデータベース呼び出しが行われ、正しく応答されます。
- データベースが最初に機能した後に (ネットワークなどで) シャットダウンすると、新しい接続がハングアップします。
コールスタックで最後に確認できるのは次のとおりです。
- Intellitrace.OpenConnection
- SAConnection.開く
- SAConnectionPoolManager.AllocateConnection
- ->Monitor.Enter
Monitor.Enter は永遠に待っているようです。
例外は発生していないようです。
だから私の考えは、接続状態を見て、接続が開いている場合にのみコマンドをトリガーすることでした(そして、それについて非常に悪い感じがあっても、状態を要求した直後に接続が切断される可能性があります)
データベースの接続オブジェクト ( iAnywhere.Data.SQLAnywhere ) を見ると、利用可能な ConnectionState があります。この ConnectionState は、「オープン」を示しています。
データベースへの接続が利用できない場合、「Broken」または「Closed」のいずれかが予想されます。
SQLAnywhere に接続状態を更新するように指示するにはどうすればよいですか?
それとも、例外を取得するより良い可能性がありますか?