私はちょうどXPからWin 7に移行しました。このエラーはオペレーティングシステムの切り替えに関係していると推測しています。データベースと挿入/更新テーブル。
データベースに接続するためのボタンを押すと、ローカルマシンに登録されていないOracleプロバイダーに関するエラーが発生します。
これを迅速に修正する方法の明確なステップバイステップの概要は大歓迎です。
正確なエラーメッセージは次のとおりです。
「OraOLEDB.Oracle.1」プロバイダーがローカルマシンに登録されていません
64ビットOracleクライアントをWindows 7 64ビットにインストールした後、同じ問題が発生しました。私のために働いた解決策:
cd \Oracle\product\11.2.0\client_64\BIN
c:\Windows\system32\regsvr32.exe OraOLEDB11.dll
IISを使用しても同じ問題が発生しました。
アプリケーションプールの詳細設定で、オプション「32ビットアプリケーションを有効にする」がtrueに設定されていることを確認します。
次のテストを実行します。
コマンドプロンプトを開き、次のように入力します:tnsping instance_name
instance_nameは、接続するインスタンスの名前です(XEデータベースの場合は、「tnsping xe」を使用します)
OKが返された場合は、Der Wolfの答えの手順に従ってください。 OKが返されない場合は、Annjawnの回答の手順に従ってください。
両方のケースで解決しました。
;C:\Oracle\product\10.2.0\client_1\bin
Windows 64ビットを使用している場合、Oracleドライバーを最初に32ビット、次に64ビットのドライバーをインストールしてみてください。
'Platform target'を 'x64'に変更した後にのみ機能しました(Oracle 12c 64ビットを使用していると考えてください)
それをするために、私はやった:
プロジェクト名を右クリックします(一般的に、ソリューションエクスプローラーパネルの左側にあります)。
「ビルド」をクリックしました(新しく開いたウィンドウで)
「プラットフォームターゲット」を「任意のCPU」から「x64」に変更しました
これで問題は解決しました。
これを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)として実行できます。プロジェクトプロパティのPlatform Target
がAny CPU
に設定されておらず、明示的に設定されていることを確認する必要があります。
そのオプションをAny CPU
からX86
に切り替えるとエラーが解決し、Oracleプロバイダーに接続できました。
私のチームは時々この問題に出くわし、プラットフォームをインストールしようとするランダムなマシンで偶然に遭遇しました(Oracleドライバー12c ver 12.2.0.4を使用していますが、他のバージョンでもこのバグに遭遇しました)
かなりの実験の後、私たちは何が間違っていたかに気付きました。
このマシンには、マシン全体のOracleドライバーをサイレントにロックし、Oracleドライバーをアップグレード/再インストールしようとするとOracleドライバーインストーラーがその魔法を働かせないようにするアプリがあります。最も卑劣な「アプリ」は、IISなどで実行されているWebサイトです。これらのアプリは本質的に再起動時に自動起動します。これに対処するには、次の手順を実行します。
これが動作しない場合は、OLE DBドライバーが動作するまで繰り返しすすいでください。
Der Wolfsのヒントに基づいて、Oracleクライアントをアンインストールしてから再インストールし、セットアッププログラムを右クリックして、管理者として実行を作成しました。動いた。