Warning: preg_match(): Unknown modifier 'b' in /mnt/datadisk/www/src/Controllers/PostController.php on line 206 SQL Server - Problema en Power BI Gateway al Usar IP o Hostname Externo para Acceder a la Base de Datos — Dirceu ResendeSaltar al contenido
¡Hola, chicos!
En este post me gustaría compartir con ustedes una situación que he visto en unos 4 clientes en los últimos 3 meses y siempre tengo que explicar lo mismo cuando los usuarios acceden al banco usando una IP o nombre de host externo, creado para que los usuarios puedan conectarse a estas fuentes de datos fuera de la red de la empresa y sin necesidad de una VPN, pero el servidor solo reconoce las direcciones internas (IP/Hostname) y no puede configurar correctamente el Power BI Gateway porque da error cuando intenta agregar la fuente de datos.
Por lo tanto, decidí crear este artículo, con dos soluciones extremadamente simples, para que pueda ser útil para las personas de la comunidad, y no solo para mis clientes de BI.
Simular y explicar el problema.
Haga clic para ver el contenido
Para entender este escenario, imagine lo siguiente:
Dentro de la misma red que el servidor o mediante VPN, el acceso a la instancia se realiza mediante un nombre de host interno (dirceu-vm) o IP (192.168.0.27, por ejemplo)
Fuera de la red, existen unas máquinas virtuales con IP fija que tienen acceso directo a la red de la empresa y acceden al servidor a través de una IP pública, direccionando puertos y liberando estas IP en el Firewall. En otras palabras, el acceso fuera de la red a este servidor se realiza utilizando la IP pública (Ej: 189.123.111.222) o host público (acessoexterno.dirceuresende.com)
Algunas personas que desarrollan informes en Power BI están dentro de la red y otras acceden a través de IP pública
Power BI Gateway está instalado y configurado en el servidor de base de datos, con el origen de datos ya creado
El usuario que accede externamente puede acceder a la base de datos y crear el informe normalmente dentro de Power BI Desktop:
Cuando un usuario dentro de la red publica el informe, funciona normalmente. Pero cuando un usuario con acceso externo publica un informe, aparece este mensaje de error:
No hay puerta de enlace para acceder a la fuente de datos DW
Y luego, cuando haga clic en "mostrar detalles", verá este mensaje de error:
Intentemos agregar la fuente de datos al Gateway entonces:
Los datos de conexión los configuro normalmente:
Pero cuando intento agregar la fuente de datos, nos encontramos con un mensaje muy común, que se muestra cuando no es posible ubicar la instancia solicitada:
Se produjo un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no fue encontrado o no era accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (proveedor: Interfaces de red SQL, error: 26 – Error al localizar el servidor/instancia especificada)
¿Y ahora?
Resolviendo el problema de conexión
En este caso, la primera prueba que hago para entender exactamente lo que está sucediendo antes de culpar al Gateway es intentar acceder a esta dirección registrada en el servidor donde está instalado el Gateway:
Como era de esperar, el servidor no reconoce esta dirección externa a la que acceden estos usuarios y, por lo tanto, la conexión al Gateway no funciona. Lo mismo sucedería si el acceso externo fuera a la IP 189.123.123.123, por ejemplo, y la IP interna del servidor del banco fuera 192.168.0.27, por ejemplo.
Para poder hacer que el servidor de puerta de enlace reconozca este nombre de host o IP externa, podemos usar estas 2 soluciones que demostraré a continuación (si conoces otras, déjalas aquí en los comentarios):
Solución 1 – Alias en el Administrador de configuración de SQL Server
Haga clic para ver el contenido
Una forma de poder hacer un “De X a” en las IP o nombres de host de SQL Server es mediante la función Alias del Administrador de configuración de SQL Server:
No olvides crear también el alias en la configuración x64:
Es importante configurar el controlador Native Client tanto en la versión de 32 bits (x86) como en la de 64 bits (x64), ya que algunos software que acceden a la base de datos solo existen en la versión de 32 bits (por ejemplo, SSMS) y otros se suelen utilizar en la versión de 64 bits (por ejemplo, Power BI Desktop).
Atención: Preste atención al protocolo y puerto de la instancia de SQL Server donde apuntará la conexión. Si esta información es incorrecta, no se realizará la conexión. Una ventaja de este enfoque es precisamente elegir qué se verá afectado por esta nota y funciona tanto con el nombre de host externo como con la IP externa. La desventaja de esta solución es que es específica de SQL Server.
Luego de esta nota, la conexión ya funciona normalmente dentro del servidor donde se encuentra el Gateway (y en este caso también el banco):
Una simple prueba me asegura que esta nota sólo afecta a SQL Server:
Solución 2: archivo de hosts
Haga clic para ver el contenido
Esta segunda alternativa es una solución a nivel de sistema operativo y consiste en cambiar el archivo de hosts de Windows para que entienda que un determinado nombre de host responde a través de una IP elegida por ti. En Windows, este archivo se encuentra en C:\Windows\System32\drivers\etc. mientras que en Linux, la ruta es /etc/hosts.
Para que esta nota funcione, deberás ingresar la IP donde debe apuntar el host elegido, dejar un espacio en blanco y luego ingresar el nombre del host que se verá afectado por esta nota manual:
Y al hacer esto, cualquier software que intente utilizar este nombre de host, para cualquier tipo de protocolo o puerto, intentará conectarse a la IP informada en el archivo de hosts (192.168.31.230, en el caso del ejemplo).
Al igual que SQL Server Management Studio (SSMS), Power BI y muchos otros:
Atención: El archivo de hosts solo le permite asignar un nombre de host a una IP. Si accede únicamente a través de una IP pública, tendrá que usar la solución Alias en el Administrador de configuración de SQL Server, comenzar a acceder a través de Nombre de host en lugar de IP o usar otra solución de apuntamiento.
Probando la solución en Power BI Gateway
Ahora que he demostrado dos formas de tomar esta nota, probemos si realmente funcionarán para mi objetivo original, que es utilizar esta fuente de datos en mi informe de Power BI publicado en la nube.
Conexión exitosa:
Ejecución de puerta de enlace y conjunto de datos de informes asociados con la fuente de datos:
Y como consecuencia de esto, el informe funciona tanto para quienes acceden utilizando la dirección interna de la red como la dirección externa 🙂
Espero que te haya gustado este tip, un fuerte abrazo y ¡hasta el próximo artículo!
Dirceu Resende
Arquitecto de Bases de Datos y BI · Microsoft MVP · MCSE, MCSA, MCT, MTA, MCP.
Comentários (0)
Carregando comentários…