sql >> データベース >  >> RDS >> Oracle

ODP.NET2.111とODP.NET4.112を同じマシンに並べてインストールし、両方が同じデータベースサーバーを指すようにする方法

    簡単な答え:

    注:以前のクライアントに新しいODP.NETをインストールしようとしましたが、次の接続文字列を使用してデータベースに接続できました...

    これは、新しいインストールの/ Network/Adminにtnsnames.oraとsqlnet.oraがないことを示しています。新しいODP.netインストールを使用して古いクライアントに問題がない場合は、古いインストールからそれらをコピーするか、TNS_ADMIN環境変数(TNS_ADMIN=C:\MyOracleFilesDir

    長い答え:

    新しいクライアントをインストールすると、アセンブリ解決プロセス中に古いOracle.DataAccess.dllへの参照を新しいバージョンにリダイレクトする発行元ポリシーファイルもGACにインストールされた可能性があります。次に、Oracle.DataAccessは、レジストリ内のパラメータ(DllPath)を介してクライアントを検索します。 .configファイルでdllPathを設定することにより、この場所を上書きできます。

    <configuration>
      <oracle.dataaccess.client>
        <add key="DllPath"            value="C:\yourotherpath"/>
      </oracle.dataaccess.client>
    </configuration>
    

    これは一般的に私が行うことですが、これをより理解するにつれて、古いクライアントに対して新しいdllを強制していることに気付きます。古いクライアントをそのままにしておくことが目標の場合は、GACからパブリッシャーポリシーを削除することをお勧めします(完全なODACインストールでインストールされているとは思わず、ODP.netのみ):

    それらを再インストールする必要がある場合は、通常、oraclepath \ odp.net\PublisherPolicyにあります。

    もう1つの、おそらくより長期的なオプションは、発行元のポリシーを無視するように古いクライアントを構成することです。http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx

    最後に、2.0フレームワークと4.0フレームワークの.netコンポーネントは、ODP.netのインストール時に個別のインストールオプションであると確信しています。 2.0コンポーネントをインストールしないだけで、この問題を回避できる可能性があると思います。その点で、代わりに64ビットodp.netに対して新しいプロジェクトを開発することで、同様の回避策を実行できます。 v2.0とv4.0のように、32ビットと64ビットもお互いを認識していません。




    1. MySQLはCSVデータからNULL値をロードします

    2. MariaDBサーバーとMariaDBクラスターの比較

    3. OracleSQLを使用して区切り文字の位置で文字列を分割する

    4. NULL列に一意のインデックスを作成するにはどうすればよいですか?