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

442

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 idea de cómo solucionar esto. Mi sistema operativo es Windows 7.

Shailesh Sahu
fuente
55
Solo un comentario tangencial: usar OLEDB para leer un archivo de Excel es una tecnología antigua, muy lenta y, como has descubierto, requiere instalar paquetes adicionales manualmente en tu máquina de destino. (De acuerdo, la pregunta se hizo en 2011.) En lugar de eso, use ClosedXml (disponible en NuGet), que funciona de inmediato.
Shaul Behr
3
@ShaulBehr Hubiera sido agradable, pero ClosedXml solo funciona para archivos .xlsx, no .xls
Jimmy
2
Si está importando al servidor SQL, puede ejecutar esta consulta desde ssms: ejecute master.dbo.xp_enum_oledb_providers Le dirá qué proveedores cree que tiene. Antes, tenía Microsoft.ACE.OLEDB.16.0 y Microsoft.ACE.OLEDB.12.0, pero cuando intenté importar datos, obtuve el mismo 'no registrado en su máquina local' que el OP, tanto para Excel 16 y formatos de archivo Excel 2007 (oledb.16.0 y oledb.12.0 respectivamente). Tiene sentido reducir sus pérdidas y renunciar al software de Microsoft en este momento.
user1040323
1
@ user1040323, execute master.dbo.xp_enum_oledb_providersle dice qué hay en el servidor, no en su máquina local .
Nathan Goings
1
Aquí el que debería funcionar; - Lo es: no está realmente documentado, pero encontré una manera de instalar las versiones de 32 bits y 64 bits. Simplemente agregue el argumento de línea de comando "/ pasivo" al comando: "C: \ ruta del directorio \ AccessDatabaseEngine_x64.exe" / pasivo
TaW

Respuestas:

532

Bueno, necesitas instalarlo. Estas buscando:

Variante
fuente
44
Descargué estos componentes y no funcionaron para mí, tuve que descargar el Microsoft Access Database Engine 2010 Redistributable desde aquí: microsoft.com/en-in/download/details.aspx?id=13255 Estoy seguro de que es porque Estoy usando MS Office 2013. Sin embargo, gracias por señalarme en la dirección correcta.
Sizons
55
Tuve que instalar el motor de la base de datos de acceso y el controlador de Office System 2007: Componentes de conectividad de datos aquí microsoft.com/en-us/download/confirmation.aspx?id=23734 para que funcione.
Chris
66
Mi situación, todo funcionaba bien, y de repente comenzó a aparecer este error. Entonces, ¿qué podría haber sucedido para causar esto? No se cambió el código.
eetawil
21
En mi caso, tuve que cambiar de "Cualquier CPU" a x64 para que coincida con mi arquitectura.
Rob Sedgwick
2
Jack the Ripper se refiere a la solución proporcionada en la respuesta en sí, no a los comentarios. La instalación 2007 Office System Driver: Data Connectivity Componentsresolvió el problema de inmediato.
silkfire
156

Una versión de 64 bits del '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 utiliza la descarga de la respuesta aceptada, deberá compilar para x86, como lo señala @ backtestbroker.com.

rsbarro
fuente
18
Si usa VS 2012, también asegúrese de que la casilla de verificación "Preferir 32 bits" esté desmarcada en Propiedades >> Construcción >> Configuración general del proyecto.
devstruck
3
Estoy usando VS 2008 (no pregunte) y esta solución no funcionó hasta que leí el consejo de post_erasmus y configuré 'Platform Target' en x64 en Propiedades >> Crear >> Configuración general de mi aplicación. Ordenado, gracias!
Recurso
1
El enlace en esta respuesta también le permite descargar e instalar una versión de 32 bits. Aunque tengo Windows 7 de 64 bits, IIS Express de Visual Studio 2013 se ejecuta en modo de 32 bits de manera predeterminada, y ya tenía algunos componentes de Office 2013 instalados en 32 bits, por lo que la instalación de 32 bits es lo que necesitaba.
Eric Barr
1
Con esta respuesta, también tengo que configurar "Habilitar aplicaciones de 32 bits" en el grupo de aplicaciones en Falso.
iowatiger08
1
Esto ayudó a resolver mi problema. Mi aplicación VS 2019 se compila usando cualquier CPU que resulta en una biblioteca x64. Tenía instalada la versión de 32 bits de Office 2013 que me impedía instalar el x64 Access DB Engine. Después de instalar la versión x64 de Office, pude instalar el motor x64 y ahora todo funciona. El infierno de DLL sigue vivo.
Mike Lowery
74

dependiendo de la aplicación (32/64 bits) 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) 6
  • verifique a sus proveedores con el comando powershell desde el 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

encontrarás las cuerdas

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 también viene 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 Office 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 "

Bernhard
fuente
Recibí este error en VS2015 usando Nuget LinqToExcel. Resulta que, como tenía instalado el ACE x64, tuve que construir explícitamente para x64 (Configuration Manager), en lugar de apuntar a cualquier CPU.
subsci
Powershell mostró que "Microsoft.ACE.Oledb.12.0" ya estaba instalado. Sin embargo, la instalación del paquete Access 2007 (también conocido como 2007 Office System Driver: Data Connectivity Components ) me puso en marcha. Ya en mi sistema: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy
66
¡El script de PowerShell que informa qué versión está instalada es genial! Gracias @Bernhard
Rob Bowman
un poco fuera de tema, pero este simple PowerShell es para sus controladores ODBC:Get-OdbcDriver | select Name,Platform
Bernhard
Esto resolvió el problema para mí en una máquina de servidor de 64 bits descargando el tiempo de ejecución de 32 bits de Access 2016. Básicamente, comience con 32 bits para estar seguro (cosas malas suceden cuando intenta cambiar las cosas a 64 bits en el proyecto).
Eric Mutta
45

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

  • Si ha creado su proyecto bajo la plataforma x86 , para resolver su problema, debe instalar los siguientes paquetes en su máquina:

    1. Para utilizar el proveedor 'Microsoft.ACE.OLEDB.12.0' , primero debe instalar el Microsoft Access Database Engine 2010 Redistributable , 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. El siguiente paso es una solución inexplicable, que funciona para Office 2010, aunque son los Componentes de conectividad de datos de Office 2007. No estoy muy seguro de por qué funciona, pero funciona y se ha demostrado que funciona en casi todos los casos. Debe instalar el controlador de 2007 Office System: 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 creada bajo x64 o la plataforma AnyCPU , recomendaría primero validar que se ejecuta como se esperaba bajo la plataforma x86. En el caso de que no se ejecute en 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 base de datos OLEDB, funcionan solo en la plataforma x86 y son incompatibles en 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. Instalación mediante el símbolo del sistema con el indicador '/ pasivo'. 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 compilar en x64 o la configuración de compilación de AnyCPU. Esto pareció resolver mi problema.

Nota: El orden de los pasos parece marcar la diferencia, así que sígalo en consecuencia.

Merav Kochavi
fuente
55
Tuve el problema de que estaba cambiando de una aplicación de 32 bits a 64 bits y ya no funcionaba. ¡La segunda parte de tus instrucciones funciona perfectamente! El indicador / pasivo permite la instalación incluso con un Microsoft Office de 32 bits.
Freddy
1
Consejo: Extraiga AccessDatabaseEngine_x64.exe en una carpeta para obtener los archivos AceRedist.msi y Data.cab. Abra el indicador de cmd en modo Administrador y ejecute el AceRedist.msi /passive.
Jeremy Thompson
1
Muchas gracias. La primera opción funcionó para mí. Recuerdo la cantidad de problemas que tenía para desinstalar Office de 32 bits y solo después de instalar Office de 64 bits, este problema se solucionó antes. Pero este componente de oficina de 64 bits hizo la magia en su lugar.
Biki
Debido a 2 puntos he arreglado. Muchas gracias. Necesito instalar este microsoft.com/download/en/confirmation.aspx?id=23734 .
SENA
33

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 compilación a x86 me resolvió el problema.

timodius
fuente
55
El OLEDB es compatible con x64. Puede ejecutarse en CUALQUIER plataforma, NO SOLO x86, sino también como cualquier CPU. Vea la respuesta completa a continuación: stackoverflow.com/a/32760211/3637582
Merav Kochavi el
Bajo depuración de la aplicación en Visual Studio, en realidad ayuda a elegir x86 en lugar de cualquier CPU / x64 en el administrador de configuración.
iknownothing
25

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:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Shaul Behr
fuente
Estaba a punto de publicar esto como mi contribución. Este fue mi problema. Cambiaría esta configuración de IIS ayer ya que un proyecto en mi solución fue compilado x86, por lo que supongo que clasificará todo el programa como 32 bits.
Lee
Mi servidor ejecuta @ 64bits pero los componentes de MS Office instalados son 32bits. Esto resolvió mi problema. Gracias.
MarceloBarbosa
¡Qué cosa increíblemente difícil de conseguir :(, me pregunto si podrías escribir esto en PowerShell e integrarlo en algún tipo de script de configuración de servidor automatizado?
David Rogers
@DavidRogers probablemente, pero no soy un experto en PS, ¡así que no me busques eso! ;-)
Shaul Behr
@ShaulBehr Espero que esto proporcione información a los demás. El comando específico que utilicé fue (En una ventana elevada de powershell / cmd): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
David Rogers
15

Para todos aquellos aú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 los scripts de PowerShell , 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 lenguaje que se base en el controlador "Microsoft.ACE.OLEDB".

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

Primero intenté instalar la versión de 64 bits , luego instalé la versión de 32 bits de 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 (desde el 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 en software ...

$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 para ver qué versión OLEDB está instalada y usar el número de versión apropiado.

TechSpud
fuente
Hola, estoy tratando de leer hojas de Excel con PowerShell. Archivos de Excel almacenados en una biblioteca de documentos de SharePoint y no hay instalación de Excel en el servidor. Tengo Windows Server 2008 R2. Instalé Office System Driver: Data Connectivity Components, sin embargo, cuando ejecuto su consulta no puedo ver Microsoft.ACE.OLEDB. ¿Tienes una idea sobre eso? y alguna sugerencia? Gracias por adelantado.
doganak
3
Encontré la respuesta. Le había pedido a nuestro administrador del sistema que instalara MS Access Database Engine. Había instalado la versión x86. Cuando ejecuté la consulta en PowerShell x86 nuevamente, vi ACE.OLEDB.
doganak
Impresionante código de PowerShell. Tenía la versión de 32 bits (que no apareció en la lista de PowerShell), lo que me impidió instalar la de 64 bits. Una vez que eliminé la versión de 32 bits, pude instalar la versión de 64 bits sin el mensaje "ya tienes componentes de Office de 32 bits ...". La versión de 64 bits apareció en la lista de PowerShell, y mi aplicación comenzó a funcionar.
Doppelganger
13

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

  • Mi escenario: Aplicación de 64 bits, Win10-64, Office 2007 de 32 bits instalado.
  • La instalación del instalador AccessDatabaseEngine.exe de 32 bits como se descargó de MS informa que fue exitosa, pero NO está instalada, como se verifica con el Script Powershell de una de las publicaciones anteriores aquí.

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

ingrese la descripción de la imagen aquí

La solución muy simple se ha encontrado aquí en un sitio de Autodesk. Simplemente agregue el parámetro / pasivo a la cadena de línea de comandos, así:

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.

josh
fuente
1
Podría instalar AccessDatabaseEngine_X64.exe de la manera habitual, pero utilicé el parámetro pasivo para instalar el equivalente de 32 bits (AccessDataBaseEngine.exe). Entonces, finalmente podría conectarme a la base de datos de Access desde Visual Studio 2019.
VolkanOzcan
10

Debe cambiar la Plataforma de soluciones de "Cualquier CPU" a "x86" o "x64" en función de la instalación de Office.

Los pasos se dan a continuación:

  1. Haga clic derecho en el archivo de solución en el Explorador de soluciones: ingrese la descripción de la imagen aquí

    1. Haga clic en el Administrador de configuración.
    2. Haga clic en el menú desplegable Active Platform, si x86 ya está allí, selecciónelo; de lo contrario, haga clic en Nuevo. ingrese la descripción de la imagen aquí

    3. Seleccione x86 o x64 del nuevo menú desplegable de la plataforma: ingrese la descripción de la imagen aquí

Compila y ejecuta tu aplicación.

mohit busa
fuente
6

Si el "AccessDatabaseEngine" instalado aún no ayuda, a continuación hay una solución:

Debe cambiar la Plataforma de solución activa de "Cualquier CPU" a "x86".

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

Desde CodeProject.com

syp_dino
fuente
Puede ejecutarlo en CUALQUIER plataforma, NO SOLO 'x86', sino también como 'Cualquier CPU' como 'x64'. Vea la respuesta completa a continuación: stackoverflow.com/a/32760211/3637582
Merav Kochavi el
6

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-registered- en la máquina local

El punto clave para mí fue este:

Al depurar con IIS,

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

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

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

Ken Johnson
fuente
1
Gracias, la mayoría de las otras respuestas son para bajar a 32 bits, pero esto lo ayuda a avanzar a 64 bits.
illinoistim
Muchas gracias, esto es lo que estoy buscando.
Manoj Kalluri
6

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

Ir

Herramientas> Opciones> Proyectos y soluciones> Proyectos web

y a partir de ahí, marque (o desmarque) la opción 'Usar la versión de 64 bits de IIS Express ...'

Albert Zakhia
fuente
1
¡Wow muchas horas probando otras soluciones, solo tu lo arreglas! gracias
Hernaldo Gonzalez
5

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

Verifique debajo de la ruta C: \ Archivos de programa \ Archivos comunes \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64 bit está instalado

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

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

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

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

Shubham Tiwari
fuente
3

syp_dino,

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

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

Sevron Ghee
fuente
Puede ejecutarlo en cualquier plataforma, NO SOLO x86, sino también como cualquier CPU. Vea mi respuesta a continuación: stackoverflow.com/a/32760211/3637582
Merav Kochavi el
3

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

El controlador de 2007 Office System: la instalación de los componentes de conectividad de datos me sirvió.

Taran
fuente
... y si eso no funciona, intente elegir una "Versión de Excel" diferente de la lista desplegable de la pantalla "elegir fuente de datos". stackoverflow.com/a/56171883/283895
tgolisch
@Taran Link no está disponible
evry1falls
Esto se parece al archivo, pero no puedo confirmar download.cnet.com/…
Taran
3

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

MD Shahriar
fuente
3

haga esto 2 pasos: 1. en este menú: proyecto -> las propiedades de su proyecto ... -> Generar: desmarque "preferir 32 bits" 2. en connectionString: escriba las comillas antes y después de las propiedades extendidas, de esta manera: Propiedades extendidas = ' Excel 12.0 Xml; HDR = SÍ '

                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;
Sharif Lotfi
fuente
Desmarcar "Preferir 32 bits" me pareció funcionar mientras tenía instalado Microsoft Access Database Engine 2010 Redistributable.
Delincuente el
¡Desmarqué 'Preferir 32 bits' y estaba funcionando!
user1584253
3

Estas configuraciones funcionaron en enero de 2020 en la construcción de mi nueva máquina:

(1 - solo x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 instalado con / argumento pasivo, configuración de compilación de VStudio establecida en x64 explícitamente, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.16.0; Fuente de datos = D: ... \ MyDatabase.accdb

(2 - x64 o x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 instalado con / argumento pasivo, PLUS AccessDatabaseEngine 2010 (32 bits) instalado con / argumento pasivo, configuración de compilación de VStudio establecida en AnyCPU, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.16.0; Fuente de datos = D: ... \ MyDatabase.accdb

(3 - x32 solamente) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) instalado con / argumento pasivo, configuración de compilación de VStudio establecida en x86, con la siguiente cadena de conexión: Proveedor = Microsoft.ACE.OLEDB.12.0; Fuente de datos = D: ... \ MyDatabase.accdb

NOTAS DE FALLO

El uso del proveedor ACE.OLEDB.12.0 x64 en la cadena de conexión falló con solo AccessDatabaseEngine_x64 2016 instalado como se indicó anteriormente en (1).

El uso de AnyCPU en la configuración de creación de Visual Studio falló en (1) Se requiere configurar x64. Tal vez esto se deba a que AnyCPU significa que Vstudio debe ver un proveedor x32 ACE.OLEDB.nn.0 en tiempo de compilación.

El motor ACE.OLEDB.12.0 2016 x32 / pasivo NO se instalaría cuando viera aplicaciones x64. (El instalador pasivo ACE.OLEDB.12.0 2010 x32 funcionó).

CONCLUSIONES

Para usar la configuración de compilación x64, debe tener el motor de base de datos x64 2016 y el proveedor de cadena de conexión ACE.OLEDB.16.0 Y la configuración de compilación x64 explícita para trabajar con Office 365 en enero de 2020. El uso de la opción / pasiva facilita las instalaciones. ¡Crédito a quien publicó ese consejo!

Para usar AnyCPU, necesitaba tener instalados el motor ACE.OLEDB.12.0 2010 x32 y los motores ACE.OLEDB.16.0 x64. De esa forma, Vstudio podría ver los motores x32 y x64 en el momento de compilación "AnyCPU". Podría cambiar la cadena de conexión del proveedor a ACE.OLEDB.12.0 para la operación x32 o a ACE.OLEDB.16.0 para la operación x64. Ambos funcionaron bien.

Para usar la configuración de compilación x86, debe tener el motor de base de datos x32 2010 Y el proveedor de cadena de conexión ACE.OLEDB.12.0 Y la configuración de compilación x86 explícita para trabajar con Office 365 x32 en enero de 2020.

Kevin
fuente
2

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

Historia del problema:

Recientemente migramos 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 así instalamos una oficina de 32 bits en nuestras máquinas.

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

Solución,

Descargué la versión de 64 bits de http://www.microsoft.com/en-us/download/details.aspx?id=13255 y la instalé con argumentos 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 mientras nuestra aplicación se ejecuta en un sistema operativo de 64 bits que tiene una oficina de 32 bits instalada.

Rahul Techie
fuente
Pero, Microsoft está en contra de esta solución. Pocos de mis clientes observan distorsiones en otros programas de Office debido a esta solución.
Rahul Techie
1

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

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

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

Todo funciona bien ahora.

Anuncios
fuente
1

También puedes probar estos pasos

En el Servidor SQL, 1. Abra una base de datos 2. Haga clic en la opción 'Obtención del servidor' 3. Haga clic en 'Servidores vinculados' 4. Haga clic en 'Proveedores' 5. Haga clic en 'Microsoft.ACE.OLEDB.12.0' 6. Desmarca todas las opciones y cierra

Diego Castro
fuente
1

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

sosha
fuente
1

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 " IIS local ", mientras que la que tenía el error estaba en " IIS Express (ejecutándose desde Visual Studio"). Entonces lo que hice fue ...

  1. Haga clic derecho en el nombre del proyecto.
  2. Ir a propiedades
  3. Vaya a la pestaña Web a la derecha.
  4. En Servidores, seleccione IIS local y haga clic en el botón Crear directorio virtual.
  5. Ejecute la aplicación nuevamente y funcionó.
NetStarter
fuente
1

Ya tenía instalado Microsoft Access Database Engine 2010 Redistributable en mi máquina, pero aún recibía el proveedor Microsoft ACE OLEDB error del .

Luego recordé que me había actualizado a Office 2016 recientemente, por lo que tal vez 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 su MS Office, intente reinstalar Microsoft Access Database Engine 2010 Redistributable antes de perder el tiempo buscando otras soluciones. ¡Buena suerte!

Sagar
fuente
1

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 bases de datos que me ayudaron.

Microsoft Access Database Engine 2010 Redistribuible

2007 Office System Driver: componentes de conectividad de datos

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

u8it
fuente
Puede ejecutarlo en CUALQUIER plataforma, NO SOLO 'x86', sino también como 'Cualquier CPU' como 'x64'. Vea la respuesta completa a continuación: stackoverflow.com/a/32760211/3637582
Merav Kochavi el
Ok, bueno, no creo que ese sea el caso para mí ... así que vale la pena mencionar que la plataforma de construcción de destino de alguien puede ser parte del problema.
u8it
1

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 archivos 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, recibirá el mensaje de error que lo trajo aquí.

En este caso tienes dos opciones. Primero, puede 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 con ella. Si tiene instalada la versión de 2010 de 32 bits, debe desinstalarla y descargar e instalar la versión de 2010 de 64 bits. 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, también puede verse limitado por el bit de cualquier instalación de Office existente.

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 utilizar 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 el siguiente enlace

Príncipe Antonio G
fuente
1

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ó por qué 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 .exe directamente para realizar la importación de datos. ¡Y funcionó!

Chagbert
fuente
Hm, tenía algunas versiones allí, SSMS debe estar usando la incorrecta.
SteveCav
1

Esto funcionó para mí en este momento.

  1. Visite esta página y luego descargue el paquete apropiado para su computadora (AccessDatabaseEngine.exe o AccessDatabaseEngine_X64.exe)
  2. Instala eso.
  3. Disfruta ... Tus códigos funcionan 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 del paquete.

O

  1. Adjunte dos proyectos (en el elemento 1) en su paquete de instalación.
Mohammad Fathi MiMFa
fuente