Uso de MS Access como fuente de datos con puerta de enlace de datos local

Un usuario Pregunto ✅

Sokon

23.11.2018: Otra actualización: El orden de las instalaciones es importante.

22.11.2018: actualicé este artículo. ¡Avísame si te funciona!

Al publicar un informe que utiliza un archivo de base de datos de MS Access local como fuente de datos, pronto descubrirá que la puerta de enlace de datos local no ofrece la posibilidad de configurar una fuente de datos de acceso. A día de hoy, Access sigue siendo no en la lista de tipos de fuentes de datos disponibles.

Sin embargo, se puede configurar una conexión de acceso para el personal Puerta. Pero, ¿qué pasa si usar una puerta de enlace personal no es una opción para usted, porque es posible que no se le permita instalarlo en su máquina? y usando un Archivo fuente de datos para el trabajo seguramente no hará el trabajo?!

Resulta que es Es posible actualizar conjuntos de datos utilizando Access como fuente de datos mediante el uso de la puerta de enlace de datos local.

que instalar

  • Instale «Microsoft Access Database Engine 2016 Redistributable» (x64) para conectarse mediante ODBC.
  • Si también desea conectarse utilizando el tipo de fuente de datos «Archivo», Adicionalmente instale el «Microsoft Access Runtime 2016» (x64) (Necesita ambas instalaciones para que funcione, pero extrañamente, descubrí que podía desinstalar el Redistribuible después de instalar el tiempo de ejecución y las conexiones de archivo y ODBC continuaron funcionando.

NO instale versiones anteriores (por ejemplo, 2010), porque parecen instalar los controladores de una manera que el controlador no aparecerá en la herramienta «Fuentes de datos ODBC (64 bits)». Sospecho que la puerta de enlace x64 no puede encontrar instalaciones en la carpeta x86.

Cómo conectarse usando ODBC

En lugar del conector de acceso inexistente, puede usar ODBC para conectarse a su archivo MDB o ACCDB.
La configuración de una conexión ODBC se puede realizar de dos maneras: DSN de archivo, DSN de usuario, DSN de sistema y a través de una conexión sin DSN.

DSN del archivo:

Intentar poner una cadena que comience con «FILEDSN=» en Power BI Desktop mostrará el mensaje «La propiedad de conexión ‘filedsn’ no es compatible».:

ArchivoDSN.png

¡No hay suerte aquí!

DSN de usuario / DSN de sistema:

Para eso, los usuarios necesitan permiso para crear DSN usando ODBCAD32.exe. Pero incluso si se les permite hacerlo, usar el mismo método en la puerta de enlace requeriría configurar los DSN de usuario para la cuenta de servicio de la puerta de enlace o los DSN del sistema en el servidor de la puerta de enlace. Esto sería una pesadilla administrativa si hay más de una base de datos de Access. Peor aún, ¿qué sucede si tiene un clúster con más de un servidor? ¿Y si hay que reinstalar uno de ellos?

¡Seguro que quieres evitar eso!

sin DSN

Una conexión sin DSN es simplemente una cadena de conexión, así:

driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=C:database.mdb

Esto funciona bien con Power BI Desktop, pero al usar la cadena en una fuente de datos ODBC de puerta de enlace, es probable que obtenga errores como este:

ERROR [HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x1830 Thread 0x6670 DBC 0x1b7e8e68 Jet'. 
ERROR [01S00] [Microsoft][ODBC Microsoft Access Driver]Invalid connection string attribute Trusted_Connection

Si busca en Google estos errores, encontrará muchas razones posibles, soluciones vagas de Microsoft y, finalmente, esto.
El punto crucial parece ser:
Otorgue permisos RWX (incluida la modificación) para el usuario que configuró para esta fuente de datos en la carpeta AppDataLocal del usuario que ejecuta el servicio de la puerta de enlace. Usamos un grupo «WF-OPDG-rwx» donde colocamos los usuarios de la fuente de datos y lo usamos para otorgar los permisos necesarios para la carpeta local del usuario del servicio de puerta de enlace.

PermisosParaTemp.pngCosas a notar:

  • conceder siempre escribir permisos en el archivo de acceso para el usuario que está configurado en la puerta de enlace, incluso si desea leer datos. Los permisos de lectura no son suficientes y también provocan errores.
  • Si eligió instalar «Microsoft Access Runtime», también puede configurar una fuente de datos usando la opción «Archivo».

Conclusión

Con la configuración correcta, tenemos dos soluciones de trabajo: ODBC y ARCHIVO sin DSN. En nuestro caso, usamos el enfoque de ARCHIVO debido a las siguientes razones:

  • Los usuarios generalmente comienzan a usar el conector de acceso en Power BI Desktop y se molestan cuando se les dice que cambien el PBIX para usar ODBC.
  • Como sabrá, la cadena de conexión en Power BI Desktop debe ser exactamente el mismo que configuraste para la puerta de enlace. Al usar ODBC, debe tener cuidado de elegir el «Nombre de fuente de datos (DSN)» Ninguna para evitar que la GUI cambie la cadena de conexión agregando ese nombre. Al usar el enfoque de archivo, se salta esa posibilidad.
    DsnNinguno.png

Pero considera este inconveniente:

  • Al otorgar permisos en la carpeta Local, todas las fuentes de datos de Access usan la misma carpeta. Eso podría ser considerado como un problema de seguridad.

Con suerte, esta publicación evitará que otros pasen días buscando una solución como lo hice yo. ¡Gracias por leer!

valdo34

Gran publicación, muchas gracias, me ayudó mucho a arreglar mi conexión a MS Access. Necesitaba cambiar mi consulta de OLEDB nativo a ODBC debido a que no podía actualizar la configuración de la fuente de datos en la puerta de enlace:

configuración de la fuente de datos.JPG

Aquí hay un ejemplo de consulta M para hacer que esa conexión funcione en el editor de consultas:

let
    Source = Odbc.DataSource("driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=\path to DBDBName.accdb", [HierarchicalNavigation=true]),
    #"\path to DBDBName.accdb" = Source{[Name="\path to DBDBName.accdb",Kind="Database"]}[Data],
    #"Query_View" = #"\path to DBDBName.accdb"{[Name="Query",Kind="View"]}[Data],
in
    #"Query_View"

Brian_M

Solo para decir que tuve problemas, no pude instalar el Microsoft Access 2016 Runtime desde el vínculo que proporcionó, ya que utiliza la tecnología de Windows Installer (MSI) y existe un conflicto al usar la versión de Office de Hacer clic y ejecutar.

Aquí está el enlace a la versión Hacer clic y ejecutar, elija su idioma en el paso 2 y aparecerá la opción de descargar la versión de 32 bits o de 64 bits.

https://support.office.com/en-us/article/download-and-install-office-365-access-runtime-185c5a32-8ba…

¡Espero que eso ayude a alguien!

BWL

Estimados @Sokon y @v-yuezhe-msft

En primer lugar, ¡gracias por tu publicación!

Tengo un modelo de PowerBI que combina datos de Oracle y diferentes bases de datos de MS Access.
Desafortunadamente, estamos atascados con la versión de 32 bits y no podemos cambiarla.

Mi objetivo es configurar una actualización programada con el puerta de enlace empresarial y las diferentes dbs de MS Access de 32 bits.

De momento tengo instalado:

  • Escritorio PowerBI de 32 bits
  • Enterprise Gateway de 32 bits y configurado con Oracle DB

¿Es posible usar el mismo enfoque que usó y configurar una actualización programada a través de ODBC?

Gracias por adelantado.

Sokon

En respuesta a BWL

El comentario de @v-yuezhe-msft es no sobre la puerta de enlace empresarial, sino sobre el personal puerta. En ese caso, las personas instalan su propia puerta de enlace y es probable que se encuentren con problemas de 32 bits/64 bits dependiendo de varias circunstancias, una de ellas es la versión de Office instalada.

Hasta donde yo sé, solo hay una versión de las «Puertas de enlace de datos locales» que debería ser de 64 bits.

En tu caso, creo que deberías estar bien. En mi escenario, también usamos 32 bits.

También debería ser posible mezclar controladores db de 64 bits y 32 bits en una puerta de enlace. Simplemente no puede ejecutar tanto el controlador de Access de 32 bits como el de 64 bits en la misma máquina, o al menos no sin trucos adicionales.

¡Espero que ayude!

BWL

En respuesta a Sokon

@Sokon, ¡tienes razón! tengo el de 64 bits «Puertas de enlace de datos locales» instalado.

Probé su enfoque y configuré un archivo DSN para un MS Accces DB.

Pero, ¿cuál es exactamente la cadena que debo usar (Puerta de enlace y escritorio) cuando intento conectarme a través del archivo DSN?

¡Gracias!

Sokon

En respuesta a BWL

Usar un archivo DSN no es mi enfoque y no funcionará. carita feliz Utilice una conexión sin DSN. Ejemplo de eso está en la publicación principal.

BWL

En respuesta a Sokon

¡¡Lo siento!! ¡Es todo bastante nuevo para mí! 😉
Probé tu configuración y usé el Conexión sin DSN.

Pero me sale el siguiente error.

Código de estado: 400
código fuente: DMTS_PublishDatasourceToClusterErrorCode
Tijd: Mié 11 de julio de 2018 16:32:20 GMT+0200 (Midden-Europese zomertijd)
versión: 13.0.5933.161
Depósito: Kan geen verbinding maken met de mashup-gegevensbron. Lea todos los detalles para obtener más información.
código fuente: -2147467259
Onderliggend foutbericht: El ‘Driver’ de eigenschap con la garantía ‘{Microsoft Access Driver (*.mdb, *.accdb)}’ no se superpone con un geïnstalleerd ODBC-stuurprogramma.
DM_ErrorDetailNameCode_UnderlyingHResult: -2147467259
Microsoft.Data.Mashup.ValueError.ClientLibraryName: Controlador de Microsoft Access (*.mdb, *.accdb)
Microsoft.Data.Mashup.ValueError.DataSourceKind: Odbc
Microsoft.Data.Mashup.ValueError.DataSourcePath: dbq=*sendero*;controlador={Controlador de Microsoft Access (*.mdb, *.accdb)}
Microsoft.Data.Mashup.ValueError.Razón: DataSource.MissingClientLibrary

Sokon

En respuesta a BWL

Parece que tiene instalado el controlador incorrecto en la puerta de enlace, si corresponde. Para un controlador anterior, debe cambiar la cadena de conexión de esta manera:

driver={Microsoft Access Driver (*.mdb)};dbq=C:database.mdb

BWL

En respuesta a Sokon

Acabo de comprobar y tengo los controladores instalados, pero sigue sin funcionar.

Solo para estar seguro, he instalado ahora:

  • Escritorio PowerBI de 32 bits
  • Acceso MS de 32 bits
  • Puerta de enlace empresarial de 64 bits
  • Motor de base de datos Microsoft Access 2010 de 32 bits en el servidor de puerta de enlace

Tienes exactamente la misma configuracion verdad?

Sokon

En respuesta a BWL

¡Pienso que si!

BWL

En respuesta a Sokon

@Sokon,

Gracias por su respuesta.
Tengo exactamente la misma configuración, pero no consigo que funcione.
Todavía no se puede conectar debido al «controlador incorrecto especificado».

Creo que la puerta de enlace de 64 bits simplemente no se puede conectar con el controlador de 32 bits.

Espero encontrar otra solución algún día. 🙂

Sokon

En respuesta a BWL

@BWL: Tuve que mover la conexión de Access y, por lo tanto, tuve que rehacer todo lo que escribí en otra máquina. Actualicé la publicación principal en consecuencia y es posible que desee volver a intentarlo. Agregué información sobre lo que instalé y arreglé una información incorrecta en la parte de permisos.

@Sokon,

Gracias por compartir los métodos anteriores sobre la actualización de la fuente de datos de Access en el servicio Power BI.

Me gustaría hacer algunos comentarios sobre “se puede configurar una conexión de acceso para el Gateway personal. Pero, ¿qué sucede si usar una puerta de enlace personal no es una opción para usted?” en su publicación. El problema de que el uso de la puerta de enlace personal para conectarse a la base de datos de MS Access podría estar relacionado con la base de datos de Access de 32 bits/64 bits.

Power BI solo tiene una puerta de enlace personal de 64 bits, está diseñado para aprovechar solo los controladores de 64 bits. En referencia a la base de datos de MS Access de 32 bits, se requiere el controlador de acceso de 64 bits en la máquina de la puerta de enlace. Puede descargarlo desde aquí, después de eso, la actualización programada podría configurarse correctamente.

Además, hay una idea sobre agregar Access como fuente de datos para la puerta de enlace local, puede votarla.

Saludos,
lidia

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *