次の方法で共有


'MSDAORA' プロバイダはローカルのコンピュータに登録されていません

質問

2013年6月3日月曜日 16:27

VB2010で以下のコードを動かしたときに、タイトルのエラーが発生してしまいます。

        Dim priOracleConn As New OleDbConnection("Provider=MSDAORA;Data Source=XXXXX;"
& _
                                         "user id=YYYY;password=ZZZZZ;Security info=False;")

            Dim priOracleCommand As New OleDbCommand( _
           "select " & _
            "* " ; _
           "from " & _
           "KODATE_M " & _
           "order by key", priOracleConn)

        Dim priReadAdapter As New OleDbDataAdapter(priOracleCommand)

         'DBオープン

      priOracleConn.Open()

同じソースファイルを用いた別プログラムではエラーが発生せず、期待通りの動作を行いますが、

このプログラムでは別クラス内にソースを移して試してみても、同じエラーが発生します。

また、生成したEXEを別PCで実行した場合、正常動作するPCとエラーを出すPCに分かれます。

このような動作に心当たりのある方がいらっしゃいましたら、ぜひともご教授ください。

すべての返信 (5)

2013年6月3日月曜日 23:45 ✅回答済み | 1 票

タイトルに書かれているエラーメッセージで検索してみましたか?そこに書かれている内容を試しても解決できなかったのであれば、それらも記載したほうが、より良い回答を得られるかと思います。

同じように、このPCではいけて、他のPCでは問題があった、などの記載もありました。

'MSDAORA' プロバイダはローカルのコンピュータに登録されていません で検索。


2013年6月4日火曜日 1:26 ✅回答済み | 1 票

実行環境に、MSDAORA がインストールされていないのだと思われます。

まず、適当なフォルダーに、拡張子 .UDL の 0 バイトファイルを置いてみてください。
次にそれをダブルクリックして、その中の「プロバイダー」タブに、『Microsoft OLE DB Provider for Oracle』が存在しているか確認してみてください。一覧に記載が無ければ、現在のコードはその環境で動作しません。

なお同じ環境であっても、.UDL ファイルを 32bitアプリ上からダブルクリックした場合と、64bitアプリ上からダブルクリックした場合とでは、上記の一覧内容が異なることがあります。MSDAORA には32bit版しか用意されていないためです。

  1. お使いの OS が64bitの場合は、アプリをx86ビルドに変更してみてください。それで接続できるようになる可能性があります。
  2. Any CPU ビルドのままで Oracle に接続したい場合には、Oracle 純正の「Oracle Provider for OLE DB」プロバイダーを利用できます。一覧にOracle版があれば、それを選択して接続テストを行ってみてください。接続できるようであれば、保存した udl ファイルをメモ帳で開くことで、接続文字列を調べることが出来ます。
  3. いずれの OLE DB プロバイダーも存在しない場合には、System.Data.OleDb 名前空間のクラスの代わりに、ODAC をインストールして、ODP.NET の Oracle.DataAccess.Client 名前空間に切り替えることを検討してみてください。

2013年6月4日火曜日 15:49

ありがとうございます。 エラーメッセージでの検索は試みていたものの、接続文字列を変えてみるなどの手当ては効果がありませんでした。

アドバイスをいただいて、再度検索で引っかかったサイトを見ているうち、どうやら64ビットがらみかもしれないと見当をつけられたことで、問題の1つは解決できました。(複数の原因でした。)

ありがとうございました。


2013年6月4日火曜日 16:14

アドバイスありがとうございます。 「同一ソースを使った別プログラムでは動作する」理由が、まさにそれでした。

(動作しないプロジェクトだけが、AnyCPUビルドになっていました。X86ビルドに変更して、動作するようになりました。お恥ずかしいです。)

そして、動作するPCとしないPCがある理由の1つもコレでした。32ビットOSで、既にOracle利用アプリが動作しているPCでも動かないPCがあったためにテンパってしまっていたのですが、そのPCはOracleのバージョンが混在しているのが原因でした。

AnyCPUビルドで動作させる手法、大変参考になりました。アドバイスありがとうございました。


2013年6月5日水曜日 5:27

GBS_MK2 さん、こんにちは
フォーラム オペレーターの星 睦美です。

参考になった投稿として投票いただいた返信に、私から[回答の候補に設定] させていただきました。

今回はkentahoga さんと魔界の仮面弁士 さんからのアドバイスが参考になったとありますので、よろしければ投稿者から[回答としてマーク]いただけると、回答者の励みになると思います。

(お忘れのような場合には私のほうで回答としてマークさせていただきますね。)

それではこれからもMSDN フォーラムをよろしくお願いします。

日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美