'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版しか用意されていないためです。
- お使いの OS が64bitの場合は、アプリをx86ビルドに変更してみてください。それで接続できるようになる可能性があります。
- Any CPU ビルドのままで Oracle に接続したい場合には、Oracle 純正の「Oracle Provider for OLE DB」プロバイダーを利用できます。一覧にOracle版があれば、それを選択して接続テストを行ってみてください。接続できるようであれば、保存した udl ファイルをメモ帳で開くことで、接続文字列を調べることが出来ます。
- いずれの 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 フォーラムをよろしくお願いします。
日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美