タイトル : Re^2: Oracleへの接続に関して 【解決】 投稿日 : 2019/12/26(Thu) 09:32 投稿者 : wanko108
> VB6 アプリの置いてあるフォルダに、11g の InstantClient を side-by-side 配置するとか。 おはようございます。 ご教示ありがとうございました。 EXEおよび開発環境で上記試してみましたがダメでした。 WindowsのデータリンクプロパティでOracle provider for OLE DBを選択して指定のDBに接続しようと試みましたがやはり同じエラーが発生しました。 おそらくWindowsデフォルトのproviderが12cのバージョンになっているようです。 前述のとおりOracleの優先順位は11gです。 他の9iバージョンのDBに接続する、VB6以外で作成されたアプリケーションは、この環境で接続できているようですので、11gのproviderは確実に存在しており、それらのアプリケーションは環境変数のPathに依存していると思われます。 これらのことから、VB6でOracle Provider for OLE DBを使用するときは環境変数ではなくWindowsのデフォルトのバージョンを参照するものと思われます。 もしかするとレジストリレベルで変更が可能かもしれませんがそこを変更できる権限がありませんので諦めます。 もし他に設定できる項目がございましたら後意見等よろしくお願い致します。 【追記】 Microsoft OLE DB Provider for Oracle を使用すると9iのDBに接続が可能でしたのでこちらは環境変数を参照していると思われます。 ですがこのproviderも将来的には削除される予定なので使用するべきではないのでしょう。 hhttps://docs.microsoft.com/ja-jp/sql/ado/guide/appendixes/microsoft-ole-db-provider-for-oracle?view=sql-server-ver15 レジストリ値の変更で接続可能な事を確認しました。 もし行なうとすれば起動時にレジストリ値を変更してDBに接続し即座に元に戻すという方法でしょうか。 ちょっと危険かもしれませんね^^; 【追記】 Oracle provider for OLE DB のProviderにはOraOLEDB.OracleというものとOraOLEDB.Oracle.1というものが存在します。どちらもProviderに指定する事が可能ですが通常は前記の方を使用していると思います。 当社の他システムでも前記の方を使用していることを確認したため、Oracle9iのDBに接続するときはOraOLEDB.Oracle.1のレジストリ値を11gに変更し接続完了後速やかに12cに戻す方法で他システムへの影響なく処理が可能となりました。 同様な問題で悩んでいる方のためにソースを記述したいところですが、安易にレジストリを変更するのは危険ですのでここでは差し控えさせて頂きます。 魔界の仮面弁士様、ご教示ありがとうございました。 |