it-swarm-es.tech

El proveedor 'Microsoft.ACE.OLEDB.12.0' no está registrado en la máquina local

Estoy tratando de obtener datos de un archivo de Excel en un evento de clic de botón. Mi cadena de conexión es:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Cuando hago clic en el botón, aparece el siguiente error:

El proveedor 'Microsoft.ACE.OLEDB.12.0' no está registrado en la máquina local.

No tengo ni idea de cómo solucionar este problema. Mi sistema operativo es Windows 7.

347
Shailesh Sahu

Bueno, necesitas instalarlo. Estas buscando:

443
Variant

Una versión de 64 bits de 'Microsoft Access Database Engine 2010 Redistributable' que le permitirá usar el proveedor 'Microsoft.ACE.OLEDB.12.0' está disponible aquí:
http://www.Microsoft.com/en-us/download/details.aspx?id=13255

Si usa la descarga de la respuesta aceptada, deberá compilar para x86, como lo indica @ backtestbroker.com.

129
rsbarro

dependiendo de la aplicación (32/64bit) usando la conexión que podría instalar

Resumen:

  • todas las oficinas de 2007-2016 contienen el proveedor "Microsoft.ACE.Oledb.12.0"
  • dependiendo de la arquitectura de su aplicación, elija el motor de tiempo de ejecución apropiado (32/64)
  • verifique sus proveedores con el comando powershell desde Shell de 32 y 64 bits :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
    
  • y verá qué proveedor puede usar su sistema

la larga historia: las cadenas se pueden encontrar con http://live.sysinternals.com/strings.exe

p.ej. en un sistema de 64 bits con controladores de 32 bits instalados

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

incluso en la próxima oficina 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

encontraras las cuerdas

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

el Office 2013 viene también con csi.dll

c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

que contiene el " Microsoft.ACE.OLEDB.15.0 "

y Oficina 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

que tiene la versión " Microsoft.ACE.OLEDB.16.0 "

56
Bernhard

Lo primero que debe verificar es la configuración de compilación de su aplicación.

  • Si tiene construyó su proyecto bajo la plataforma x86 , para resolver el problema, debe instalar los siguientes paquetes en su máquina:

    1. Para utilizar el proveedor 'Microsoft.ACE.OLEDB.12.0', debe instalar Microsoft Access Database Engine 2010 Redistributable primero, esta instalación está disponible en: http://www.Microsoft.com /download/en/details.aspx?id=13255 .

      Una vez completada la instalación, intente ejecutar su aplicación, si esto resuelve el problema, si no, continúe con el paso 2.

    2. Este próximo paso es una solución alternativa inexplicable, que funciona para Office 2010, a pesar de ser los Componentes de conectividad de datos de Office 2007. No estoy muy seguro de por qué esto funciona, pero sí funciona y se ha demostrado que funciona en casi todos los casos. Necesita instalar el controlador del sistema de Office 2007: componentes de conectividad de datos , esta instalación está disponible en: http://www.Microsoft.com/download/en/confirmation.aspx?id=23734 .

      Una vez completada esta instalación, intente ejecutar su aplicación, esto debería resolver el problema.

  • Si está intentando ejecutar una aplicación construida bajo la plataforma x64 o AnyCPU , recomendaría primero validar que se ejecuta como se espera en la plataforma x86. En el caso de que no se ejecute bajo esa plataforma x86, realice los pasos en la primera parte y valide que se ejecute como se esperaba.

    Leí que los controladores de MS Access, incluido el controlador de la base de datos OLEDB, solo funcionan bajo la plataforma x86 y son incompatibles con la plataforma x64 o AnyCPU. Pero esto parece ser falso. Validé que mi aplicación se estaba ejecutando al compilar x86, luego instalé el motor de base de datos de Access usando la bandera pasiva.

    1. Primero descargue el archivo localmente Puede descargar la instalación aquí: http://www.Microsoft.com/en-us/download/details.aspx?id=13255
    2. Instalar usando el símbolo del sistema con el indicador '/ passive'. En el símbolo del sistema, ejecute el siguiente comando: 'AccessDatabaseEngine_x64.exe/passive'

    Después de estos 2 pasos, logré ejecutar mi aplicación después de crear la configuración de compilación de x64 o AnyCPU. Esto pareció resolver mi problema.

Nota: El orden de los pasos parece hacer una diferencia, por lo tanto, siga en consecuencia.

33
Merav Kochavi

Recibí este error/excepción en Visual Studio 2010 cuando cambié mi compilación en el cuadro de diálogo Administrador de configuración de "x86" a "Cualquier CPU". Entiendo que este controlador de base de datos OLEDB solo funciona en x86 y no es compatible con 64 bits. Cambiar la configuración de construcción de nuevo a x86 solucionó el problema por mí.

30
backtestbroker.com

Instalé los controladores de MS y todavía no funcionó para mí. Luego encontré esta publicación de blog que resolvió el problema. Léalo allí; de lo contrario, use estas dos imágenes (vinculadas desde esa publicación) como el resumen de TLDR:

 enter image description here

 enter image description here

22
Shaul Behr

Si está utilizando 64 bits pero sigue teniendo problemas incluso después de instalar AccessDatabaseEngine, consulte esta publicación , solucionó el problema por mí.

es decir, necesita instalar this AccessDatabaseEngine

15
Aximili

Para todos aquellos que todavía están afectados por esto.

He estado recibiendo el error ...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

... según lo descrito por el OP, Shailesh Sahu.

Tengo 64 bits de Windows 7.

Mi problema está dentro de PowerShell scripts, pero está usando una cadena de conexión, similar a la publicación del OP, por lo que espero que mis hallazgos se puedan aplicar a C #, PowerShell y cualquier otro idioma que confíe en "Microsoft.ACE.OLEDB "conductor.

Seguí las instrucciones en este hilo del foro de MS: http://goo.gl/h73RmI

Primero intenté instalar la versión 64 bits, luego instalé la versión 32 bits del AccessDatabaseEngine.exe desde esta página http://www.Microsoft.com/en-us/download /details.aspx?id=13255

Pero todavía no hay alegría.

Luego ejecuté el siguiente código en PowerShell (del sitio de SQL Panda http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

... lo que me dio este resultado (he eliminado otras fuentes de datos por brevedad) ...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

Como puede ver, tengo Microsoft.ACE.OLEDB. 15 . 0 (quince) no Microsoft.ACE.OLEDB. 12 . 0 (doce)

Entonces, modifiqué mi cadena de conexión a 15 y funcionó.

Por lo tanto, un fragmento rápido de PowerShell para demostrar cómo codificar la versión ...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

modificado para elegir la última versión de ACE, si hay más de una

Con suerte, cualquiera que encuentre esto ahora puede verificar qué versión de OLEDB está instalada y usar el número de versión apropiado.

14
TechSpud

Debe cambiar la Plataforma de soluciones de "Cualquier CPU" a "x86" o "x64" según el nivel de bit de la instalación de la oficina.

Los pasos se dan a continuación:

  1. Haga clic derecho en el archivo de solución en el Explorador de soluciones:  enter image description here

    1. Haga clic en el administrador de configuración.
    2. Haga clic en el menú desplegable Plataforma activa, si x86 ya está allí, seleccione eso, o haga clic en Nuevo.  enter image description here

    3. Seleccione x86 o x64 en el menú desplegable de la nueva plataforma:  enter image description here

Compila y ejecuta tu aplicación.

6
mohit busa

Pude solucionar esto siguiendo los pasos de este artículo: http://www.mikesdotnetting.com/article/280/solved-the-Microsoft-ace-oledb-12-0-provider-is-not- registrado en la máquina local

El punto clave para mí fue este:

Al depurar con IIS,

de forma predeterminada, Visual Studio utiliza la versión de 32 bits. Puede cambiar esto desde Visual Studio yendo a Herramientas »Opciones» Proyectos y soluciones »Proyectos web» General, y seleccionando

"Utilice la versión de 64 bits de IIS Express para sitios web y proyectos"

Después de marcar esa opción, luego volver a configurar el objetivo de la plataforma de mi proyecto en "Cualquier CPU" (lo había configurado en x86 en algún lugar del proceso de solución de problemas), pude superar el error.

4
Ken Johnson

Si el "AccessDatabaseEngine" instalado todavía no ayuda, a continuación se encuentra la solución:

Debe cambiar la plataforma de soluciones activas de "Cualquier CPU" a "x86".

El proveedor OLEDB no está registrado en la máquina local

De CodeProject.com

4
syp_dino

Primero verifique qué versión de Microsoft.ace.oledb.12.0 está instalada en su sistema.

Ingrese a continuación la ruta C:\Archivos de programa\Archivos comunes\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --64 bit está instalado

Verifique abajo la ruta C:\Archivos de programa (x86)\Archivos comunes\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --x86 bit está instalado

Si (x86) está instalado, utilice la plataforma de la solución de cambio del administrador de configuración a x86, para x64 cambie a x64.

Si no está disponible, instálalo utilizando el siguiente enlace

https://www.Microsoft.com/en-us/download/details.aspx?id=23734

3
Shubham Tiwari

Si está depurando un proyecto web, simplemente asegúrese de que IIS Express se ejecuta en 32 o 64 bits, según la configuración de su proyecto.

Ir

Herramientas> Opciones> Proyectos y Soluciones> Proyectos Web

y desde allí marque (o desmarque) la 'Usar versión de 64 bits de IIS Express ...'

3
Albert Zakhia

Tuve este problema al intentar importar datos de un archivo de Excel (xlsx) en una base de datos de SQL Server utilizando SSMS 2014.

El 2007 Office System Driver: componentes de conectividad de datos install me ayudó.

3
Taran

syp_dino,

La solución para mí como sugirió para el proveedor "Microsoft.ACE.OLEDB.12.0 'no está registrada en la máquina local" error es cambiar la Plataforma de soluciones activas de "Cualquier CPU" a "x86".

Cuando realicé esos pasos, reconstruí la solución, cogí el EXE y lo coloqué en la red, todo funcionó sin problemas en la máquina de Windows 7 de 64 bits.

3
Sevron Ghee

Me enfrenté a este mismo problema. Vaya a las Propiedades de la solución y cambie cualquier CPU a x86, creo que hará el trabajo.

2
Md Shahriar

Simplemente descargue e instale el siguiente motor de base de datos de Access (X86 o X64: según la configuración de su máquina) y vea la magia :)

https://www.Microsoft.com/en-us/download/confirmation.aspx?id=13255

2
Biki

Tengo un problema similar cuando estamos leyendo el archivo de Excel.

Historia del problema:

Recientemente hemos migrado nuestra aplicación de 32 bits a 64 bits debido al requisito de memoria. Para eso migramos nuestras ventanas 7 de 32 bits a 64 bits. Pero aún instalamos oficinas de 32 bits en nuestras máquinas.

porque de esto tuvimos este problema al importar datos de Excel en la aplicación.

Solución,

Descargué la versión de 64 bits de http://www.Microsoft.com/en-us/download/details.aspx?id=13255 e instalé con el argumento como,

AccessDatabaseEngine_x64.exe/pasivo

Sin ningún cambio de código mi problema se resuelve.

Nota:

En el sistema operativo de 64 bits y la oficina de 64 bits, mi funcionalidad funcionaba bien sin esta solución. Esta solución solo es necesaria cuando nuestra aplicación funciona con 64 bits en el sistema operativo de 64 bits que tiene instalada una oficina de 32 bits.

2
Rahul Techie

Seguí las instrucciones establecidas por otros; instalando este parche, instalando ese parche así como el Microsoft Access Database Engine 2010.

Mi problema fue que estoy usando la misma biblioteca (linq2sql) en 2 sitios en mi máquina; 1 trabaja y 1 no.

Finalmente, encontré que tenía que "habilitar aplicaciones de 32 bits" en la configuración avanzada del conjunto de aplicaciones para mi sitio que no funciona.

Todo funciona bien ahora.

1
Ads

Esto funcionó para mí ahora mismo.

  1. Visite esta página luego descargue el paquete apropiado para su computadora (AccessDatabaseEngine.exe o AccessDatabaseEngine_X64.exe)
  2. Instala eso.
  3. Enjoye ... Tus códigos es trabajo ahora ...

Pero para su paquete de aplicación puede utilizar cualquiera de las siguientes soluciones:

  1. Vaya a "C:\Archivos de programa (x86)\Archivos comunes\Microsoft shared" o "C:\Archivos de programa\Archivos comunes\Microsoft Shared" y coloque el directorio "OFFICE14" en la misma ubicación del archivo de paquete.

O

  1. Adjunte dos proyectos (en item1) en su paquete de instalación.
1

Recuerde instalar AccessDatabaseEngine en el servidor para la aplicación web.

1
sosha

Tenía Microsoft Access Database Engine 2010 Redistributable ya instalado en mi máquina pero todavía recibía el Proveedor Microsoft ACE OLEDB error.

Luego recordé que me había actualizado a Office 2016 recientemente, así que, quizás debería intentar reinstalar Microsoft Access Database Engine 2010 Redistributable . Y eso solucionó el problema en mi máquina.

Por lo tanto, si ha actualizado a una versión diferente de MS Office o incluso ha reparado/reinstalado MS Office, intente volver a instalar Microsoft Access Database Engine 2010 Redistributable antes de perder tiempo en encontrar otras correcciones. ¡Buena suerte!

1
Sagar

haga esto 2 pasos: 1. en este menú: proyecto -> sus propiedades del proyecto ... -> Compilación: desmarque "preferir 32 bits" 2. en connectionString: escriba cuotes antes y después de Propiedades extendidas, como esto: Propiedades extendidas = ' Excel 12.0 Xml; HDR = YES '

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;
1
Sharif Lotfi

Si recibe este error cuando intenta utilizar ACE desde una aplicación ASP.NET, la causa más probable es que haya instalado una de las versiones de 32 bits. De manera predeterminada, IIS en un sistema operativo de 64 bits ejecutará aplicaciones en un proceso de trabajo de 64 bits. Los procesos de 64 bits no pueden cargar DLL de 32 bits. Cuando se realiza una llamada al proveedor de ACE, el proceso de 64 bits intentará localizar una DLL de 64 bits. Si no existe, aparece el mensaje de error que te trajo aquí.

En este caso tienes dos opciones. Primero, puedes instalar la versión 2010 de 64 bits. Si tiene instalada la versión 2007 de 32 bits, simplemente puede instalar la versión 2010 de 64 bits junto a ella. Si tiene instalada la versión de 32 bits de 2010, debe desinstalarla y descargar e instalar la versión de 64 bits de 2010 en su lugar. No puede tener las versiones de 32 y 64 bits del proveedor de 2010 instaladas al mismo tiempo. Si está realizando la instalación en su máquina de desarrollo, es posible que también esté limitado por el bit de las instalaciones de Office existentes.

La segunda opción es cambiar el grupo de aplicaciones en IIS para habilitar aplicaciones de 32 bits. Si está utilizando la versión completa de IIS, puede usar la herramienta de administración para hacerlo (Panel de control »Herramientas administrativas» Administrador de servicios de información de Internet (IIS)).

Para una mayor comprensión, consulte a continuación enlace

1
Prince Antony G

1.) Verifique su cadena de conexión con ConnectionStrings.com .

2.) Asegúrese de tener instalado el motor de base de datos correcto. Estos fueron los dos motores de base de datos que me ayudaron.

Microsoft Access Database Engine 2010 Redistributable

Controlador del sistema de Office 2007: Componentes de conectividad de datos

3.) Podría haber un problema con la plataforma de destino de compilación como "Cualquier CPU", puede que tenga que ser "X86" (Propiedades, Compilación, Objetivo de plataforma).

1
u8it

también puedes probar estos pasos.

En SQL Server, 1. Abra una base de datos 2. Haga clic en la opción 'Obtención de servidor' 3. Haga clic en 'Servidores vinculados' 4.Clic en 'Proveedores' 5. Derecho de conflicto en 'Microsoft.ACE.OLEDB.12.0' 6. Desmarque todas las opciones y cierre

1
Diego Castro

Tuve el mismo problema, pero en este caso Microsoft-ace-oledb-12-0-provider ya estaba instalado en mi máquina y funcionaba bien para otras aplicaciones desarrolladas.

La diferencia entre esas aplicaciones y la que tenía el problema era que las aplicaciones antiguas se ejecutaban en " Local IIS " mientras que la que tenía el error estaba en " IIS Express (ejecutando desde Visual Studio "). Así que lo que hice fue ...

  1. Haga clic derecho sobre el nombre del proyecto.
  2. Ir a propiedades
  3. Ir a la pestaña web a la derecha.
  4. En Servidores, seleccione Local IIS y haga clic en el botón Crear directorio virtual.
  5. Ejecute la aplicación de nuevo y funcionó.
1
NetStarter

Aunque se han dado muchas respuestas, el problema que encontré aún no se ha mencionado.

  • Mi escenario: Aplicación de 64 bits, Win10-64, Office 2007 32-Bit instalado.
  • La instalación del instalador de 32 bits AccessDatabaseEngine.exe según se descargó de MS informa que se realizó correctamente, pero NO está instalada, como se verificó con el script Powershell de una de las publicaciones anteriores.

  • La instalación del instalador de 64 bits AccessDatabaseEngine_X64.exe informó un mensaje de error sorprendente:

 enter image description here

Se ha encontrado la solución muy simple aquí en un sitio de Autodesk. Solo agregue el parámetro/pasivo a la cadena de línea de comandos, como esto:

AccessDatabaseEngine_X64.exe/pasivo

Instalación exitosa, el controlador OleDb funcionó.

Los archivos de Excel que estoy procesando con OleDb son de tipo xlsx, producidos con EPPlus 4.5 y modificados con Excel 2007.

0
josh
  • He estado enfrentando el mismo problema durante días. Instalé los controladores OLEDB para 64 bits, también probé 32 bits que están disponibles en el sitio web de Microsoft.
  • Intenté reinstalar la versión de Office de 64 bits, pero de alguna manera no funcionó. Intentado Permitir la aplicación de 32 bits en IIS pool true.
  • Se intentó cambiar el entorno del proyecto a X86, AnyMachine, Mixed. Y casi probé todos los parches que pude encontrar en internet. Pero todas las soluciones me decepcionaron.
  • Aunque finalmente llegué a saber que el proveedor que estábamos descargando era el último y tampoco estaba trabajando con él.
  • Lo desinstalé e instalé los controladores de Oledb 14.0.7015.1000 .No tengo el enlace porque lo obtuve de los recursos de la empresa, es posible que tenga que buscarlo en Google pero funciona. Vine en esteDESCARGAR EL ENLACEde Microsoft y funcionó también ... sin embargo, es la versión 14.0.6119.5000 pero funcionó.
0
Maulik Modi

La forma en que lo resolví en diferentes ordenadores:

Tengo una máquina Windows 7 de 32 bits con Visual Studio 2012 que no tenía la base de datos de Access porque no tengo la Office 2010. Copié la misma fuente que tenía en mi máquina Windows 7 de 64 bits.

Entonces, instalé AccessDatabaseEngine en esta máquina de Windows 7 de 32 bits después de descargarlo según las sugerencias anteriores de otros aquí y todo funcionó bien.

Todavía tenía el problema en mi máquina con Windows 7 de 64 bits que ya tiene Office 2010 que ya incluye Access 2010. La forma en que lo resolví en esta computadora fue ingresando al PROYECTO, Propiedades seleccionadas, y en la plataforma el objetivo tenía Cualquier CPU que marqué Preferir 32 bits. Recompilado/Compilación y el proveedor Microsoft.ACE.OLEDB.12.0 'no está registrado en el mensaje de la máquina local.

0
Humbert

Depende de la oficina que haya instalado, si tiene x64 bit office, debe compilar la aplicación como x64 para permitir que se ejecute, así que si desea que se ejecute en x36, debe instalar office x86 para aceptar, lo intenté Todas las soluciones anteriores pero ninguna funcionó hasta que, cuando me di cuenta de que tenía Office x64bit, construí la aplicación como x64 y trabajé.

0
Maina Wycliffe

Recibí este error al importar datos de un archivo de Excel a MS-SQL. El proveedor ya estaba instalado (64 bits) y esto me sorprendió porque no funcionó. Así que todo lo que hice fue localizar la aplicación Importar/Exportar utilizada aquí, es decir, el .EXE. Y lo encontré en

C:\Archivos de programa\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe

Luego ejecuté el archivo .exe directamente para realizar la importación de datos. ¡Y funcionó!

0
Chagbert