Creé una aplicación de Windows desarrollada en .NET 3.5 en un servidor Windows 2008 de 32 bits. Cuando se implementa la aplicación en un servidor de 64 bits, muestra el error "El proveedor de Microsoft.Jet.OLEDB.4.0 'no está registrado en la máquina local".
Entonces, como solución a este problema, he cambiado la propiedad de compilación del proyecto a X86, para que se construya en modo de 32 bits y reconstruya el proyecto en la máquina de 32 bits. Pero, el mismo proyecto utiliza otros controladores de base de datos (DB2, SQL, etc.) para conectarse a otras bases de datos. Entonces, cuando implementé mi aplicación nuevamente en el sistema operativo de 64 bits, arroja la excepción "Intenté cargar un ensamblado 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)
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.
fuente
Tengo el mismo problema
Apliqué la respuesta de neo pero no funcionó hasta que cambié el proveedor a "Proveedor = Microsoft.ACE.OLEDB.12.0;" en cadena de conexión.
Espero que esto ayude si alguien enfrenta el mismo problema.
fuente
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, solo usted puede usar "
Microsoft.Jet.OLEDB.4.0
". Microsoft no ha lanzado la versión de 64 bits de este controlador.Si la extensión del archivo es xlsx o el sistema operativo es de 64 bits, debe 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
Microsoft.ACE.OLEDB.12.0
64 bits en el sistema operativo de 64 bits. Si ya instaló Office 32 bit, entonces necesita ejecutar el controlador desde cmd con / argumento pasivo. Este truco solo funciona hasta Office 2013, Microsoft detuvo esta solución alternativa de Office 2016 para los controladores Microsoft.ACE.OLEDB.16.0.Descargar controladores Microsoft.ACE.OLEDB.12.0
Si la aplicación se compila con el indicador AnyCPU, buscará los controladores de acceso de 64 bits en el sistema operativo de 64 bits y los controladores de acceso de 32 bits en el sistema operativo de 32 bits.
fuente
Tengo el mismo mensaje, tengo una página web con do en visual studio 2010, leí un archivo .xls en esa página, en mi proyecto visual no tengo ningún problema, cuando lo puse en mi IIS local, tírenme un 'Microsoft .Jet.OLEDB.4.0 'el proveedor no está registrado en la máquina local' , arreglé el problema luego de seguir estos pasos,
1.-Abra IIS
2.-Cambie el grupo de aplicaciones en Configuración avanzada
3.-verdadero para habilitar la aplicación de 32 bits.
y eso es todo
ps.Cambié Configuration Manager a X86 en Active Solution Platform
fuente
Si su aplicación se ejecuta en localIIS, puede resolver este problema habilitando aplicaciones de 32 bits en la Configuración avanzada de AppPool
fuente
Tuve el mismo problema. Cambié la configuración de la aplicación a
x86
, ¡y funcionó!fuente
Acabo de cambiar mi propiedad del proyecto en formato x64
Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X64
fuente
Hemos encontrado este problema en la aplicación de escritorio.
Entorno de desarrollo: Windows 7 Ultimate - Proveedor de .Net Framework 4.5 de 64 bits = Microsoft.Jet.OLEDB.4.0
Se ha resuelto cambiando el objetivo de la plataforma a X86 desde cualquier CPU. Propiedades del proyecto >> Build >> Platform Target.
fuente
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 tenía 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ó:
Instalé la versión de 64 bits de Microsoft Access Database Engine 2010 Redistributable , como lo sugiere neo
Cambié mi proveedor a Microsoft.ACE.OLEDB.12.0
fuente
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
el SDK .Net para cambiar las características de carga de la aplicación.CorLibs.exe
, así que simplemente verifique las Herramientas de desarrollo de Windows .CorFlags.exe
. Para mi instalación del .Net Framework 3.5 SDK, estaba enC:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
.path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+
.Ya terminaste! Esto establece los indicadores de inicio de su programa para que se inicie en modo WOW64 de 32 bits y, por lo tanto, pueda acceder a microsoft.jet.oledb.4.0.
fuente
Cambio en la configuración avanzada del grupo de aplicaciones de configuración de IIS.Habilite la aplicación de 32 bits
fuente
Simplemente cambie la propiedad en función de su máquina y todo habrá hecho :-)
Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X64
o
Proyecto ---> Propiedades ---> Compilación ---> Marco de destino ---> X86
fuente
He cambiado mi cadena de conexión de
var myConnectionString = string.Format ("Proveedor = Microsoft.Jet.OLEDB.4.0; Fuente de datos = {0}; Información de seguridad persistente = True; Jet OLEDB: Contraseña de la base de datos =;", gisdbPath);
a esto:
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Source Data = {0}; user id = Admin; password =;", gisdbPath);
Funciona porque nunca pedí Microsoft.Jet.OLEDB.4.0 'registrado.
fuente
De hecho, no hay una versión de Jet de 64 bits, 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
Sin embargo, es posible que pueda cambiar el proyecto a 32 bits en la versión Express (no lo he probado y ya no tengo 2008 instalado)
¿Tal vez es hora de desechar las bases de datos de Access por completo, morder la bala y optar por el servidor SQL?
fuente
Estoy usando VS2013 para Winforms, la solución a continuación funcionó para mí.
Descargar: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Luego establezca VS Target Platform en x86.
fuente
En versiones anteriores de IIS, no lo encontrará
Advance Settings
paraEnable 32-bit Applications
que pueda 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: aquí
fuente
Recibí la misma excepción al ejecutar "Importar y exportar datos de SQL Server 2014 (64 bits)" en mi Windows 8.1.
Para solucionar este problema, hice lo siguiente
inició SQL Server 2014 Importar y exportar datos (32 bits) en lugar de 64 bits y está funcionando para mí. No he cambiado ninguna configuración de IIS y no he instalado ningún software adicional.
fuente
Sé que tengo este problema una y otra vez cuando implemento mi aplicación en un nuevo servidor porque estoy usando este controlador para conectarme a un archivo de Excel. Así que aquí está lo que estoy haciendo últimamente.
Hay un Windows Server 2008 R2, instalo los controladores de Access para una máquina de x64 bits y me deshago de este mensaje, lo que me hace muy feliz de encontrarme con otro.
Este 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, lo que creo que este es el problema, pero así es como lo resolví.
Reemplazo con el nuevo proveedor como este a continuación:
Pero mientras hago esto, hay una cosa que debes 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 el ISAM instalable" , decido cambiar las cosas un poco como a continuación:
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 está abierto exclusivamente por otro usuario, o necesita permiso para ver y escribir sus datos.lo que me dice que no estoy lejos de resolverlo.
Tal vez hay otro proceso que abrió el archivo mientras tanto y todo lo que tengo que hacer es reiniciar y todo comenzará a funcionar sin problemas como se esperaba.
fuente
vaya a Inicio-> Ejecutar y escriba cmd, esto iniciará el Símbolo del sistema (también disponible en Inicio-> Programas-> Accesorios-> Símbolo del sistema)
escriba cd .. y presione regresar escriba cd .. y presione regresar nuevamente (siga haciendo esto hasta que aparezca el mensaje:>)
ahora necesita ir a una carpeta especial que podría ser c: \ windows \ system32 o podría ser c: \ winnt \ system32 o podría ser c: \ windows \ sysWOW64 intente escribir cada una de ellas, por ejemplo, cd c: \ windows \ sysWOW64 (si dice El sistema no puede encontrar la ruta especificada, intente con la siguiente) cd c: \ windows \ system32 cd c: \ winnt \ system32 cuando uno de ellos no causa un error, deténgase, ha encontrado el carpeta correcta
ahora necesita registrar las DLL de OLE DB 4.0 escribiendo estos comandos y presionando la tecla de retorno después de cada
regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
fuente
No hay un proveedor de 64 bits para Jet. Si desea admitir múltiples fuentes de base de datos, incluido Jet to Excel, necesitará al menos esa parte de su aplicación para ejecutarse en un proceso de 32 bits.
El error que obtiene cuando compila para x86 es un poco extraño. No puedo ver cómo terminaría haciendo referencia a conjuntos de 64 bits en este caso.
fuente