visual-studio-2008 oracle odp.net

visual studio 2008 - El proveedor no es compatible con la versión del error del cliente de Oracle cuando se usa Oracle.DataClient



visual-studio-2008 odp.net (5)

Estoy usando Visual Studio 2008 Express Edition, y estoy intentando desarrollar una pequeña aplicación utilizando Oracle.DataClient. Recibo el error mencionado anteriormente, cuando intento conectarme a la base de datos en el sistema de destino.

He agregado una referencia al proveedor de Oracle ODP.net para Oracle 10gR2, y en la máquina de destino tengo una copia de la base de datos de Oracle 10gR2 instalada. A pesar de esto, estoy recibiendo el error. Antes de publicar esto, leí esta publicación en SO, y he instalado el cliente instantáneo, el error persiste. A continuación se muestra la pila de error completo.

************** 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

Tengo Oracle 11g instalado en la máquina en la que desarrollé la aplicación, y funciona bien allí, pero en la máquina de destino, recibo este error. Cualquier entrada será apreciada.

PD: Como se mencionó anteriormente, la versión del archivo Oracle.DataClient.dll referenciada corresponde a 10gR2, no a 11g.


¿Ha creado y probado una conexión con éxito utilizando el Administrador de ODBC en su sistema cliente?

Hay un parche para un problema de permisos en el cliente 9i y 10g que resulta en este error. Si estás en 10.2.0.1, es posible que necesites actualizar a 10.2.0.3 para resolver esto.


Bueno, he hecho que mi aplicación use la conexión Ole DB (System.Data.Oledb namespace), y funciona bien. Teniendo en cuenta que la aplicación es solo una interfaz para llamar a Oracle SP y que no hay valores devueltos, creo que este enfoque es aceptable, porque en los 2 días que pasé tratando de encontrar una solución a este problema podría haber completado mucho Más desarrollo en la aplicación. Todavía estoy abierto a las respuestas, ya que puedo aprender de qué error cometo para tales aplicaciones en el futuro.


He estado investigando este problema aún más, y simplemente necesita tomar todos los archivos DLL apropiados de la misma versión descargada de ODP.Net y colocarlos en la misma carpeta que su archivo Exe, porque ODP.Net es quisquilloso al no mezclar Números de versión, que es el problema que está viendo (o eso o el oci.dll está totalmente perdido, en cuyo caso produce el mismo error).

He explicado cómo hacer esto aquí: http://splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c Aquí está la esencia de esto:

  • Descargue http://www.oracle.com/technology/software/tech/windows/odpnet/index1110710beta.html
  • Descomprime el archivo
  • Descomprimir todos los JAR en ella
  • Coge estos archivos DLL que simplemente fueron descomprimidos: oci.dll (renombrado de ''oci.dll.dbl'') Oracle.DataAccess.dll oraociicus11.dll OraOps11w.dll orannzsbb11.dll oraocci11.dll ociw32.dll (cuyo nombre cambió en ''ociw32.dll''). dbl '')
  • Coloque todas las DLL en la misma carpeta que su ejecutable de C #

Incluso después de instalar la versión apropiada de Oracle Client, tenemos que verificar que .Net Framewark está instalado en el servidor, ODP.Net es compatible con .Net Framework 3.5 a 4.5.2.


Tuve el mismo problema. Si tiene el cliente 11g instalado en su máquina, entonces necesita usar la DLL ODP.Net 11g. Tuve que desinstalar todo por completo, y luego instalar el cliente 11g, y luego los controladores 11DP ODP.NET. Los controladores se instalan en el GAC y se vuelve un poco molesto.

* Tenga en cuenta que mi DBA entiende que esto solo funciona si no tiene que conectarse a ninguna versión inferior a 9i *

Tuvimos que hacer esto en nuestros servidores también.

HTH