2009-08-09 23 views
16

Visual Studio 2008 Express Editionを使用しています.Oracle.DataClientを使用して小さなアプリケーションを開発しようとしています。 ターゲットシステムのデータベースに接続しようとすると、上記のエラーが発生します。Oracle.DataClientを使用する場合、プロバイダがOracleクライアントのバージョンと互換性がありません。

Oracle 10gR2用のOracle ODP.netプロバイダへの参照を追加しました。ターゲットマシンにOracle 10gR2データベースのコピーがインストールされています。それにもかかわらず、私はエラーを取得しています。 これを投稿する前に、私はthis postを読んでおり、インスタントクライアントをインストールしてもエラーは解決しません。 以下は完全なエラースタックです。

************** Exception Text ************** 
System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException The provider is not compatible with the version of Oracle client at Oracle.DataAccess.Client.OracleInit.Initialize() 
    at Oracle.DataAccess.Client.OracleConnection..cctor() 
    --- End of inner exception stack trace --- 
    at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString) 
    at Employees1.frmLogin.oralogin() 
    at Employees1.frmLogin.btnTest_Click(Object sender, EventArgs e) 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 


************** Loaded Assemblies ************** 
mscorlib 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.42 (RTM.050727-4200) 
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll 
---------------------------------------- 
API Data Conversion Assistant 
    Assembly Version: 0.0.0.1 
    Win32 Version: 0.0.0.1 
    CodeBase: file:///C:/Documents%20and%20Settings/3i/My%20Documents/My%20Dropbox/Sathya's%20dropbox/VisualStudio%20Releases/APIDataconversion/Application%20Files/API%20Data%20Conversion%20Assistant_0_0_0_3/API%20Data%20Conversion%20Assistant.exe 
---------------------------------------- 
System.Windows.Forms 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.42 (RTM.050727-4200) 
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll 
---------------------------------------- 
System 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.42 (RTM.050727-4200) 
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll 
---------------------------------------- 
System.Drawing 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.42 (RTM.050727-4200) 
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll 
---------------------------------------- 
Oracle.DataAccess 
    Assembly Version: 2.102.2.20 
    Win32 Version: 2.102.2.20 

私は、アプリケーションを開発し、それが正常に動作しますが、ターゲット・マシン上で、私はこのエラーを取得していたマシンにインストールされているOracle 11gのを持っています。 すべての入力をいただければ幸いです。

PS:前述のとおり、Oracle.DataClient.dllファイルのバージョンは、11gではなく10gR2に対応しています。

+3

それは次のようになります質問に投票した人がコメントに理由を記入するといいです... – DCookie

+1

私は朝、同じ問題で苦労して過ごしました。 – Chris

答えて

17

私はさらにこの問題に見てきた、とあなたは、単にODP.Netの同じダウンロードバージョンからすべての適切なDLLのをつかむと、あなたのEXEファイルと同じフォルダにそれらを配置する必要があり、なぜならODP.Netはバージョン番号を混在させないようにしているからです。これはあなたが見ている問題です(oci.dllが完全に見つからない場合は、同じエラーが発生します)。

私はここにこれを行う方法を説明しました:ここhttp://splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c は、しかし、それの要点です:

  • ダウンロードhttp://www.oracle.com/technology/software/tech/windows/odpnet/index1110710beta.html
  • ファイルを解凍し
  • を解凍し、その中のすべてのJARの
  • グラブこれらのDLLは解凍されたばかりです。 oci.dll( 'oci.dll.dbl'から名前を変更) Oracle.DataAccess.dll oraociicus11.dll OraOps11w.dll orannzsbb11.dll oraocci11.dll OCIW32.DLL( 'ociw32.dll.dbl' から改称)
  • あなたのC#実行可能ファイルと同じフォルダ内のすべてのDLLを入れ
+0

説明をいただきありがとうございます、それは魅力のように機能しました!同じ問題を抱える他の人たち:[最新のバージョン](http://download.oracle.com/otn/nt/instantclient/112020/instantclient-basic-nt-11.2.0.2.0.zip)には、DLLが直接含まれています。 –

1

クライアントシステムでODBCアドミニストレーターを使用して接続を作成し、正常にテストしましたか?

このエラーが発生する9iおよび10gクライアントのアクセス許可の問題のパッチがあります。 10.2.0.1の場合は、これを解決するために10.2.0.3にアップグレードする必要があります。

+0

@dcookie:はい、私のSPがMS SQL ServerからOracleテーブルにデータを取得するので、ODBC接続は成功します。 – Sathya

0

私はアプリケーションでOle DB(System.Data.Oledb名前空間)接続を使用するようにしましたが、正常に動作します。このアプリケーションがOracle SPを呼び出すためのフロントエンドであり、返される値がないことを考慮すると、このアプローチは許容できるアプローチだと考えています。この問題を解決するために2日間費やしたので、アプリの開発が進んでいます。 私はまだ、そのようなアプリケーションのために私が間違いを犯していることを知ることができるので、答えはまだ開いています。

0

同じ問題が発生しました。あなたのマシンに11gのクライアントがインストールされている場合は、11gのODP.Net DLLを使用する必要があります。私はすべてを完全にアンインストールしてから11gのクライアントをインストールし、次に11gのODP.NETドライバをインストールする必要がありました。ドライバはGACにインストールされ、それはちょっと痛みになる。

*注、それはあなたが任意のバージョンに少ない * 9iのより

を接続する必要がない場合は、この唯一の作品は我々はまた、当社のサーバー上でこれをしなければならなかったというのが私のDBAから私の理解です。

HTH

関連する問題