XPからWin7に移行したばかりです。このエラーはOSの切り替えと関係があるのではないかと思います。私が書いた.netアプリケーションは、基本的に大量のデータを処理し、データベースに接続してテーブルを挿入/更新します。
データベースに接続するためのボタンを押すと、Oracleのプロバイダがローカルマシンに登録されていないというエラーが発生します。
どのようにしてこの問題を迅速に解決することができるのか、明確なステップバイステップのアウトラインを教えていただければ幸いです。
正確なエラーメッセージは次の通りです。
'OraOLEDB.Oracle.1'プロバイダがローカルマシンに登録されていません。
Windows 7 64ビット版に64ビット版のOracleクライアントをインストールしたところ、同じ問題が発生しました。 私に効いた解決策は
1.コマンドプロンプトを管理者モードで開きます。
2. 「cd ̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶11.2.0\client_64\BIN」と入力します。
3. c:‾Windows‾system32‾regsvr32.exe OraOLEDB11.dll
を実行してください。
これをC#プロジェットで取得する場合は、次のコードで64ビットモードまたは32ビットモードで実行しているかどうかを確認します。
if (IntPtr.Size == 4)
{
Console.WriteLine("This is 32-Bit!");
}
else if (IntPtr.Size == 8)
{
Console.WriteLine("This is 64 Bit!");
}
64ビットモードで実行していることが判明した場合は、32ビットに切り替えてみてください(逆も同様です)。 このガイドに従ってくださいを使用して、アプリケーションを64または32ビット(それぞれX64およびX86)として実行するように強制できます。 プロジェクトプロパティの「プラットフォームターゲット」が「任意のCPU」に設定されていないこと、および明示的な設定であることを確認する必要があります。
。。
そのオプションを「任意のCPU」から「X86」に切り替えるとエラーが解決し、Oracleプロバイダーに接続できました。
私のチームは、プラットフォームをインストールしようとするランダムなマシンで時々この問題に出くわしました(oracleドライバー12c ver 12.2.0.4を使用していますが、他のバージョンでもこのバグに遭遇しました)。
かなりの実験の後、私たちは何が悪いのかを理解しました:
上記のマシンには、マシン全体のOracleドライバーを使用して静かにロックし、oracleドライバーインストーラーが上記のoracleドライバーをアップグレード/再インストールしようとするときに魔法を働かせないようにするアプリがあります。 これらのアプリは基本的に再起動時に自動起動するため、最も卑劣な「アプリ」はIISなどで実行されるWebサイトになります。 これに対抗するために、次のことを行います。
1。 再起動時にIISを自動的に起動できないようにします。 再起動時に自動起動する他のアプリ/サービスについても同じようにします。 2。 以前のOracleドライバーをアンインストールし、レジストリまたはフォルダーに痕跡が残っていないことを再確認します。 2。 マシンを再起動します。 3。 (再)Oracleドライバーをインストールし、IISおよびその他の自動起動アプリを再度有効にします。 4。 マシンを再起動<-これは不可欠です。 マシンを再起動しない限り、OracleのOLE DBドライバーは機能しません。
これが機能しない場合は、OLE DBドライバーが機能するまで繰り返し洗い流します。 これが、何が起こっているのかを理解するのに苦労している誰かを助けることを願っています。