7

変更を依頼された .net アプリがあり、.net Framework 2.0 を使用しています

ローカル マシンで Oracle DB の接続の詳細を使用して ODBC DSN をセットアップし、接続をテストしたところ、正常に動作しました。

ここでアプリケーションを実行しましたが、問題なく終了しました。エラー ログを確認したところ、この問題とは関係のないエラーがいくつか見つかりましたが、このエラーは表示されませんでした。

そのため、これらのエラーに到達するために、ブレークポイントを使用してアプリを再度実行しました。今回は以下のエラーでクラッシュしました

エラー [IM004] [Microsoft][ODBC Driver Manager] SQL_HANDLE_ENV でのドライバーの SQLAllocHandle が失敗しました

これで私が得ているのは、10分も前に問題なく実行され、ブレークポイントを追加しただけだということです.

私はいくつかの答えを見つけて、それらすべてを試してみました。

  1. オラクルドライバーフォルダーの読み取り/実行をオフに設定して、アクセス許可をリセットしましたが、違いはありませんでした
  2. 「パス」環境変数を確認しましたが、問題ありません
  3. ODBC アドミニストレーターを使用して、エラーなしで接続をテストしました。
  4. DSN を指している接続文字列が正しいことを確認しました 5. リスト項目
  5. ドライバーが 32 ビットであるため、アプリが 32 ビットで実行されるようにセットアップされていることを確認しました。

私が行っていない唯一のことは、保存し、コンピューターをシャットダウンして再起動し、再試行することです..これは、この投稿の直後に行います。うまくいけば投稿します.

とにかく、誰かがこの動作を引き起こす原因について何か考えているなら、私はあなたにとても感謝しています.

コンピューターは Win7、.net FrameWork は 2.0、VB.net、Oracle ドライバーは 10g (10.2)

更新: OK、ODBC アドミニストレータを使用して DSN を削除し、再構築しました。アプリを実行しましたが、うまくいきました。

変更せずに今日遅くに戻ってきて、アプリケーションを再実行したところ、再びエラーが発生しました。DSN を再構築しようとしましたが、役に立ちませんでした。再起動しようとしましたが、役に立ちませんでした。

以下はスタックトレースです。

StackTrace:
       at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
       at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
       at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
       at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.Odbc.OdbcConnection.Open()
4

1 に答える 1

1

これをリモートデスクトップで実行していますか? その場合、リモート デスクトップ ユーザーの「グローバル オブジェクトの作成」をローカル ポリシーに追加する必要がある場合があります。

ローカル デスクトップを使用している場合は、実行している ODBC ドライバーのバージョンを確認してください。11.2.xx よりも古いものである場合は、おそらく Oracle から新しい ODBC ドライバーをインストールする必要があります (Microsoft Oracle ODBC ドライバーは使用しないでください。問題があります)。

于 2013-05-14T14:38:34.807 に答える