especificar servidor vinculado

Un usuario Pregunto ✅

jpanzeca

¿Puedo especificar un servidor vinculado en la configuración de la fuente de datos?

Puedo escribir consultas en SSMS especificando el servidor vinculado en la consulta.

SELECCIONAR DE [linked server name].[data base name].[table name]

Me gustaría usar este mismo servidor vinculado para acceder a los datos, pero parece que no puedo averiguar cómo decirle a Power BI que haga esto.

netboyz

Veo que esta pregunta se hizo hace mucho tiempo y probablemente todos ya la hayan resuelto, pero no pude encontrar ninguna respuesta directa publicada. Aquí hay varios fragmentos de M que extraen datos a través de SQL Server a través de servidores vinculados con combinaciones en M. En los ejemplos, el servidor vinculado LS_Proto está dirigido a un libro de Excel y estoy extrayendo datos de rangos con nombre, pero por supuesto, estos pueden piratearse para extraer de diferentes fuentes. Estoy ilustrando el uso de LS con varias funciones de datos M. Y mientras extraemos datos a través de SQL Server de fuentes externas, también mostró el uso de OPENROWSET.

Uso de OleDb.DataSource, con Linked Server Query, para obtener y unirse desde rangos con nombre de Excel
dejar
xlAlloc = OleDb.DataSource («Proveedor = MSOLEDBSQL; catálogo inicial = ExcelProto; fuente de datos = MYSERVER SQLEXPRESS», [Query=»SELECT * FROM LS_Proto…rngAlloc»]),
xlBOM = OleDb.DataSource («Proveedor = MSOLEDBSQL; catálogo inicial = ExcelProto; fuente de datos = MYSERVER SQLEXPRESS», [Query=»SELECT * FROM LS_Proto…rngBOM»]),
AB = Table.Join (xlAlloc, {«akAllocRevKey»}, xlBOM, {«bmBOMItemKeyIn»}, JoinKind.LeftOuter),
en
AB

Uso de OleDb.Query, con Linked Server Query, para obtener y unirse a rangos con nombre de Excel
dejar
FileSource = «Proveedor = MSOLEDBSQL; catálogo inicial = ExcelProto; fuente de datos = MYSERVER SQLEXPRESS»,
xlAlloc = OleDb.Query (FileSource, «SELECT * FROM LS_Proto … rngAlloc»),
xlBom = OleDb.Query (FileSource, «SELECT * FROM LS_Proto … rngBOM»),
AB = Table.Join (xlAlloc, {«akAllocRevKey»}, xlBOM, {«bmBOMItemKeyIn»}, JoinKind.LeftOuter),
en
AB

Usando OleDb.DataSource, con OPENROWSET Query, para obtener y unirse a rangos con nombre de Excel
dejar
xlAlloc = OleDb.DataSource («Proveedor = MSOLEDBSQL; catálogo inicial = ExcelProto; fuente de datos = MYSERVER SQLEXPRESS», [Query=»SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0′,’Excel 12.0; Database=C:filepathFile.xlsm;HDR=YES’, rngAlloc)»]),
xlBOM = OleDb.DataSource («Proveedor = MSOLEDBSQL; catálogo inicial = ExcelProto; fuente de datos = MYSERVER SQLEXPRESS», [Query=»SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0′,’Excel 12.0; Database=C:filepathFile.xlsm;HDR=YES’, rngBOM)»]),
AB = Table.Join (xlAlloc, {«akAllocRevKey»}, xlBOM, {«bmBOMItemKeyIn»}, JoinKind.LeftOuter),
en
AB

Anónimo

Debería poder hacer eso con una consulta sin formato en las opciones avanzadas del indicador de SQL Server.

Ver captura de pantalla:

PBIDesktop_2017-11-01_10-49-10.png

jpanzeca

En respuesta a Anónimo

Gracias Sonny,

Lo había intentado antes y recibí el siguiente error …

La clave no coincide con ninguna fila de la tabla.

En respuesta a jpanzeca

@jpanzeca,

Lo había intentado antes y recibí el siguiente error …

La clave no coincide con ninguna fila de la tabla.

Este error indica que no podemos consultar el servidor vinculado directamente en Power BI. Y para solucionar este problema, debemos crear una conexión ODBC y luego cambiar cada consulta para usar la conexión ODBC y la consulta sql como dice.

Si tiene alguna inquietud sobre esta función, puede enviar su idea en el enlace a continuación. Si varios usuarios mencionaron esta función, el equipo de producto considerará agregar esta función en la próxima versión.
https://ideas.powerbi.com/forums/265200-power-bi-ideas

Gracias por su comprensión.

Saludos,

Charlie Liao

jpanzeca

En respuesta a jpanzeca

Encontré una solución al crear una conexión ODBC y luego cambiar cada consulta para usar la conexión ODBC y la consulta SQL. Esto llevó un poco de tiempo ya que tenía más de 20 consultas, pero funciona por ahora.

= Odbc.Query («dsn = Conexión ODBC», «SELECCIONAR * DE [Link Server].[Database].[Table]»)

Deja un comentario

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