1

非常に.. ばかげた問題。

SQLAnywhere12 への呼び出しは、c# コードから行われます。

  • 利用可能なデータベースへのデータベース呼び出しが行われ、正しく応答されます。
  • データベースが最初に機能した後に (ネットワークなどで) シャットダウンすると、新しい接続がハングアップします。

コールスタックで最後に確認できるのは次のとおりです。

  • Intellitrace.OpenConnection
  • SAConnection.開く
  • SAConnectionPoolManager.AllocateConnection
  • ->Monitor.Enter

Monitor.Enter は永遠に待っているようです。

例外は発生していないようです。

だから私の考えは、接続状態を見て、接続が開いている場合にのみコマンドをトリガーすることでした(そして、それについて非常に悪い感じがあっても、状態を要求した直後に接続が切断される可能性があります)

データベースの接続オブジェクト ( iAnywhere.Data.SQLAnywhere ) を見ると、利用可能な ConnectionState があります。この ConnectionState は、「オープン」を示しています。

データベースへの接続が利用できない場合、「Broken」または「Closed」のいずれかが予想されます。

SQLAnywhere に接続状態を更新するように指示するにはどうすればよいですか?

それとも、例外を取得するより良い可能性がありますか?

4

1 に答える 1

0

問題は「解決」されました。

ORM として Telerik OpenAccess を使用します。独自の接続プールがあります。

Telerik 接続プールを無効にし、ADo.Net 接続プールを有効にすると役に立ちました。

于 2013-03-22T10:56:51.320 に答える