¡Un post cortito para hoy! Me topé con esto mientras configuraba la nueva función de Azure Synapse Link para Dataverse en un entorno.

La mayoría de las veces, cuando configuro recursos en Azure, lo hago como «Owner» de una suscripción o de un grupo de recursos. Esto significa que trabajo en modo dios todo el tiempo y no tengo algunos problemas que sí se encuentran los usuarios con menos derechos de acceso.

Arreglando Synapse Link
Arreglando Synapse Link

¿Qué es Azure Synapse Link para Dataverse?

Si estás utilizando la función «Export to Data Lake» usando el add-in de LCS, debes saber que se declaró obsoleto el 15 de octubre de 2023, y que a partir del 1 de noviembre de 2024, dejará de funcionar. Azure Synapse Link para Dataverse lo va a reemplazar, y puedes aprender cómo migrar con la Synapse Link transition guide.

La nueva función de Synapse Link se configura desde el portal de creadores de Power Platform y sigue admitiendo entidades de datos estándar y personalizadas y tablas. Pero si quieres aprender más sobre ello y cómo configurarlo, puedes leer:

El problema: el acceso al blob

Cuando configuramos Synapse Link con un workspace de Synapse, tendremos los siguientes recursos:

  • Cuenta de almacenamiento: aquí es donde se almacenan los datos del ERP en formato de data/delta lake, dependiendo de cómo configures Synapse Link.
  • Workspace de Synapse Analytics: aquí podemos explorar datos gracias a la instancia SQL serverless integrada.
  • Spark pool: se utiliza para el procesamiento y transformación de datos.

Uno de los requisitos para configurar todo esto es que necesitamos agregar el workspace de Synapse Analytics como «Storage Blob Data Contributor» en la cuenta de almacenamiento para que pueda leer datos.

Cuando haces todo esto y accedes al pool serverless de SQL en el workspace de Synapse Analytics, puedes consultar datos sin problemas. Y lo mismo si intentas acceder desde SQL Server Management Studio (SSMS) con tu usuario que es «propietario «Owner» en Azure.

Pero, ¿qué pasa si creas una app en Microsoft Entra ID que se utilizará como un service principal para acceder a la instancia SQL serverless? Creamos la aplicación, la añadimos como un service principal con el rol «Synapse SQL Administrator» dentro del workspace, luego accedemos a la instancia SQL con SSMS, intentamos consultar la CustTable y…

Content of directory on path 'https://your_storage_account_name.dfs.core.windows.net/dataverse-instance-name/deltalake/custtable_partitioned/_delta_log/*.*' cannot be listed.

¡Qué pasa aquí? ¿Recuerdas que añadimos el workspace de Synapse Analytics como «Storage Blob Data Contributor» en la cuenta de almacenamiento? Bueno, necesitamos hacer lo mismo con el service principal que hemos creado y que utilizaremos para leer datos.

Así que ve a tu cuenta de almacenamiento y luego en los roles añade:

Añadir roles a la cuenta de almacenamiento
Añadir roles a la cuenta de almacenamiento

Podemos usar «Storage Blob Data Contributor» o «Storage Blob Data Reader», que tiene menos derechos de acceso, pero suficientes para consultar datos.

Ahora solo espera unos minutos e intenta ejecutar la consulta de nuevo. ¡Y problema resuelto!

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info