visual the studio registrado registered proveedor not net microsoft machine está equipo engine c# .net oledb 32bit-64bit jet

c# - the - El proveedor Microsoft.Jet.OLEDB.4.0 ''no está registrado en la máquina local



ole db provider microsoft jet oledb 4.0 is not registered (21)

Creé una aplicación de Windows desarrollada en .NET 3.5 en un servidor de Windows 2008 de 32 bits. Cuando se implementa la aplicación en un servidor de 64 bits, se muestra el error "El proveedor de Microsoft.Jet.OLEDB.4.0 ''no está registrado en la máquina local".

Entonces, como una solución a este problema, he cambiado la propiedad de compilación del proyecto a X86, de modo que se compile en el modo de 32 bits y reconstruya el proyecto en la máquina de 32 bits. Sin embargo, el mismo proyecto utiliza otros controladores de base de datos (DB2, SQL, etc.) para conectarse a otras bases de datos. Así que cuando implementé mi aplicación nuevamente en el sistema operativo de 64 bits, lanza la excepción "Intento cargar un ensamblaje de 64 bits en una plataforma de 32 bits".

Estoy usando el controlador Microsoft.Jet.OLEDB.4.0 para leer y escribir en Excel (.xls)


Acabo de cambiar mi Propiedad de proyecto en formato x64

Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X64


Aunque una solución más óptima es simplemente recompilar como se sugirió anteriormente, eso requiere acceso al código fuente. En mi caso, solo tenía el .exe terminado y tuve que usar esta solución. Utiliza CorFlags.exe del .Net SDK para cambiar las características de carga de la aplicación.

  1. Descargue .Net Framework SDK (utilicé personalmente 3.5 , pero la versión utilizada debería ser igual o superior a la .Net requerida para su aplicación.
  2. Durante la instalación, todo lo que necesita es CorLibs.exe , así que solo revise las Herramientas de desarrollo de Windows .
  3. Después de la instalación, encuentre su CorFlags.exe . Para mi instalación de .Net Framework 3.5 SDK, estaba en C:/Program Files/Microsoft SDKs/Windows/v7.0/Bin .
  4. Abra un símbolo del sistema y escriba path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+ .

¡Terminaste! Esto establece los indicadores de inicio de su programa para que se inicie en el modo WOW64 de 32 bits y, por lo tanto, puede acceder a microsoft.jet.oledb.4.0.


Cambio en la configuración avanzada del conjunto de aplicaciones de configuración de IIS. Permite la aplicación de 32 bits


En versiones anteriores de IIS, no encontrará la Advance Settings avanzada, de modo que para habilitar Enable 32-bit Applications , debe ejecutar los siguientes comandos:

cscript% SYSTEMDRIVE% / inetpub / adminscripts / adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1

y

% SYSTEMROOT% / Microsoft.NET / Framework / v2.0.50727 / aspnet_regiis.exe -i

Referencia: Here


Encontré una solución para este problema. El problema que describí en mi pregunta se produjo básicamente debido a la incompatibilidad del controlador Microsoft.Jet.OLEDB.4.0 en el sistema operativo de 64 bits.

Entonces, si estamos usando el controlador Microsoft.Jet.OLEDB.4.0 en un servidor de 64 bits, tenemos que forzar a nuestra aplicación a que se incorpore en el modo de 32 bits (esta es la respuesta que encontré cuando hice una búsqueda exhaustiva de este problema conocido ) y eso hace que otra parte de mi código se rompa.

Afortunadamente, ahora Microsoft lanzó un 2010 Office System Driver compatible con 64 bits que puede usarse como reemplazo del controlador tradicional Microsoft.Jet.OLEDB.4.0. Funciona tanto en servidores de 32 bits como de 64 bits. Lo he usado para la manipulación de archivos de Excel y funcionó bien para mí en ambos entornos. Pero este controlador está en BETA .

Puede descargar este controlador de Microsoft Access Database Engine 2010 Redistributable



He cambiado mi cadena de conexión de

var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0}; Persist Security Info = True; Jet OLEDB: Database Password =;", gisdbPath);

a esto:

var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Data Source = {0}; user id = Admin; password =;", gisdbPath);

Funciona para mí nunca pidió Microsoft.Jet.OLEDB.4.0''registrado.


La solución más fácil es ir a Propiedades del proyecto y establecer el objetivo de compilación a x86 desde Cualquier CPU.


Me encontré con este problema con mi aplicación de escritorio (el proveedor ''Microsoft.Jet.OLEDB.4.0'' no está registrado en la máquina local). No tuve la opción de compilar como una aplicación de 32 bits. Esperando que esto ayude a otros en la misma situación.

Hice lo siguiente y el problema desapareció:

  1. Se instaló la versión de 64 bits de Microsoft Access Database Engine 2010 Redistributable , como lo sugirió neo

  2. Cambié mi proveedor a Microsoft.ACE.OLEDB.12.0


No hay un proveedor de 64 bits para Jet. Si desea admitir varias fuentes de BD, incluido Jet to Excel, necesitará al menos esa parte de la aplicación para ejecutarse en un proceso de 32 bits.

El error que está obteniendo cuando compila para x86 es un poco extraño. No puedo ver cómo terminaría haciendo referencia a los ensamblados de 64 bits en este caso.


Nos hemos topado con este problema en la aplicación de escritorio.

Entorno Dev: Windows 7 Ultimate - 64 bit .Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0

Se resolvió cambiando el objetivo de la Plataforma a X86 desde Cualquier CPU. Project Properties >> Build >> Platform Target.


Obtuve la misma excepción al ejecutar "SQL Server 2014 importar y exportar datos (64 bits)" en mi Windows 8.1.

Para solucionar el problema este problema, he hecho lo siguiente

inició SQL Server 2014 Importar y Exportar datos (32 bits) en lugar de 64 bits y me funciona. No he cambiado ninguna configuración de IIS y no he instalado ningún software adicional.


Sé que son preguntas bastante antiguas y muchas personas han respondido. pero estoy resumiendo las cosas para entender:

Si la extensión del archivo es xls y el sistema operativo es de 32 bits, entonces solo puede usar " Microsoft.Jet.OLEDB.4.0 ". Microsoft no ha lanzado la versión de 64 bits de este controlador.

Si la extensión de archivo es xlsx o el sistema operativo es de 64 bits, entonces debe tener que usar " Microsoft.ACE.OLEDB.12.0 ". La aplicación compilada en modo de 32/64 bits no afecta la selección del controlador.

Instale siempre el controlador de 64 bits de Microsoft.ACE.OLEDB.12.0 en OS de 64 bits. Si ya ha instalado Office 32 bit, entonces necesita ejecutar el controlador desde cmd con / argumento pasivo.

AccessDatabaseEngine_x64.exe /passive

Descargue los controladores Microsoft.ACE.OLEDB.12.0

private void ProcessFile(string path) { string connString = string.Empty; if (Path.GetExtension(path).ToLower().Trim() == ".xls" && Environment.Is64BitOperatingSystem == false) connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=2/""; else connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=/"Excel 12.0;HDR=Yes;IMEX=2/""; }


Sé que tengo este problema una y otra vez cuando despliegue mi aplicación en un nuevo servidor porque estoy usando este controlador para conectarme a un archivo de Excel. Entonces aquí está lo que estoy haciendo últimamente.

Hay un Windows Server 2008 R2, instalo los controladores de acceso para una máquina de 64 bits y me deshago de este mensaje, lo que me hace muy feliz de encontrarme con otro.

Este de aquí abajo funciona espléndidamente en mi máquina de desarrollo pero en el servidor me da un error incluso después de instalar los últimos controladores ODBC, que creo que este es el problema, pero así es como lo resolví.

private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|//OlsonWindows.xls;Extended Properties=/"Excel 8.0;HDR=YES/"";

Reemplazo con el nuevo proveedor como este a continuación:

private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/OlsonWindows.xlsx;Extended Properties=''Excel 12.0;HDR=YES;'';";

Pero mientras hago esto, hay una cosa que deberías notar. El uso de la extensión de archivo .xlsx y la versión de Excel es 12.0.

Después de entrar en este mensaje de error Error: "No se pudo encontrar ISAM instalable" , decido cambiar las cosas un poco como a continuación:

private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/OlsonWindows.xls;Extended Properties=''Excel 8.0;HDR=YES;'';";

y sí, he terminado con esa cosa desagradable, pero aquí recibí otro mensaje El motor de la base de datos de Microsoft Access no puede abrir o escribir en el archivo ''time_zone''. Ya ha sido abierto exclusivamente por otro usuario, o necesita permiso para ver y escribir sus datos. lo que me dice que no estoy muy lejos de resolverlo.

Tal vez haya otro proceso que abra el archivo mientras tanto y todo lo que tengo que hacer es reiniciar y todo comenzará sin problemas como se esperaba.


Si el problema persiste en ASP.NET, todo lo que tuve que hacer fue cambiar la configuración "Habilitar aplicaciones de 32 bits" a Verdadero, en la Configuración avanzada para el grupo de aplicaciones.


Si su aplicación se ejecuta en localIIS, puede resolver este problema habilitando aplicaciones de 32 bits en la configuración avanzada de AppPool.


Simplemente cambie la propiedad en función de su máquina y todos lo han hecho :-)

Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X64

o

Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X86


Tengo el mismo mensaje, tengo una página web con do en visual studio 2010, leo un archivo .xls en esa página, en mi proyecto visual no hay ningún problema, cuando lo pongo en mi local de IIS, me lanzo un ''Microsoft .Jet.OLEDB.4.0 ''el proveedor no está registrado en la máquina local'' , solucioné ese problema a continuación siguiendo estos pasos,

1.-Abrir IIS
2.-Cambiar el apppool en Configuración avanzada
3.-verdadero para habilitar a la aplicación de 32 bits.

y eso es todo

ps. Cambié Configuration Manager a X86 en Active Solution Platform


Tengo el mismo problema

El proveedor Microsoft.Jet.OLEDB.4.0 ''no está registrado en la máquina local

Apliqué la respuesta por neo, pero no funcionó hasta que cambié el proveedor a "Provider = Microsoft.ACE.OLEDB.12.0;" en la cadena de conexión.

Espero que esto ayude si alguien enfrenta el mismo problema.


Tuve el mismo problema. Cambié la configuración de la aplicación a x86 , ¡luego funcionó!


De hecho, no hay una versión de 64 bits de Jet, y no hay planes (aparentemente) para producir una.

Es posible que pueda utilizar el controlador ACE de 64 bits: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734

  • pero no tengo idea de cómo funcionaría si necesitas volver a Jet para tus aplicaciones de 32 bits.

Sin embargo, es posible que pueda cambiar el proyecto a 32 bits en la versión Express (no lo intenté y ya no instalé 2008 con ningún sabor)

Tal vez es hora de eliminar las bases de datos de Access por completo, muerde la bala y opta por el servidor SQL.