bugfix> oracle > 投稿

WebサイトをホストするIISを備えたサーバーがあります。 これらのWebサイトの一部(Silverlight)は、Oracleデータベースに接続してOleDb経由でクエリを実行する必要がありますが、できません。

私がテストした結果は次のとおりです。

  • 「msdaora」プロバイダーはローカルマシンに登録されていません Webサイトで実行すると

  • ORA-01019:ユーザー側でメモリーを割り当てることができません (管理者ステータスなしでテストコンソールプログラムに接続しようとすると)

  • 接続OK (管理者ステータスの同じテストコンソールプログラムを使用)

  • ORA-12154:TNS:指定された接続識別子を解決できませんでした 別の接続方法(OleDbからOracle.ManagedDataAccess.Clientへ)に切り替えようとするとき

この種のエラーに関する無数の情報を調べましたが、有効なソリューションが見つかりませんでした。 ここに私がテストしたものがあります:

  • 関連するユーザーに「グローバルオブジェクトの作成」権限を与える(変更なし)
  • 複数のOracleクライアントを次々にインストールします。最良の結果は、10.2クライアント64b(テストプログラムが管理者権限を持ちながら接続できる場合)です。インストールはクリーンです(複数のOracleフォルダーも複数のOracle環境変数も同時にありません)
  • 管理者の昇格に関する警告を無効にします(つまり、昇格中に確認メッセージが表示されません):変更はありません

  • RAM使用量のチェック(足元の十分なメモリ)

追加情報:

  • 接続文字列は

Provider=msdaora;Data Source=HOSTNAME;User Id=USER;Password=PASSWORD

  • OleDbおよびOracle.ManagedDataAccess.Clientで使用されるのと同じ接続文字列。

  • tsnames.oraファイルが存在します(管理者テストプログラムでの成功した試みを示すように機能します)。

  • 古いWebサーバーで動作していますが、意味のあるものを見つけるにはあまりにも多くの違いがあります(異なるWindows、32/64b、異なるIISバージョン、異なるOracleクライアント)

何か案が ?

回答 1 件
  • いくつかのポイントがあります。

    Microsoft msdaora  OLE DBのプロバイダーは、長年にわたって非推奨です。 Oracle Provider OraOLEDB.Oracle を好むべきです 。

    Oracleクライアントそして OLE DBプロバイダーそして IISアプリケーションは同じアーキテクチャを持っている必要があります。つまり、すべて32ビットまたは64ビットである必要があり、それらを混在させることはできません。 (古代の msdaora  64ビットでは使用できません)。ただし、ODP.NET Managed Driver( Oracle.ManagedDataAccess )32ビットと64ビットの両方で機能します。

    ODP.NET Managed Driverを使用する場合は、 Provider=MSDAORA  ConnectionStringでは必要ありません。このような属性は無視されるか、言及し損ねただけだと思います。

    OracleクライアントとOLE DBプロバイダーのバージョンが一致する必要があります(マイナーバージョンも)。 COMの制限により、それぞれ32ビットと64ビットに複数のOLE DBプロバイダーをインストールすることはできません。

    tnsnames.ora の検索パターン  OLE DBのファイルは、ODP.NET Managed Driverの検索パターンとは異なります。次の項目を確認します。

    OLE DBは TNS_ADMIN のレジストリを読み取ります  値、ODP.NET Managed Driverはサポートしていません。

    ODP.NET Managed Driverは、.NET構成ファイル(つまり、 web.configmachine.configtnsnames.ora の場所を決定する  ファイル、OLE DBはありません。

    文書によると、ODP.NET Managed Driverは TNS_ADMIN を考慮に入れています  環境変数とフォルダー %ORACLE_HOME%\network\admin 。しかし、私のテストによるととにかくそれはします。

    接続障害については、「管理者としてのRus」に依存し、Oracleインストールフォルダの権限を確認してください。

あなたの答え