Hey guys!
Nesse post, eu gostaria de compartilhar com vocês uma situação que já presenciei em uns 4 clientes nos últimos 3 meses e sempre tenho que explicar a mesma coisa quando usuários acessam o banco utilizando um IP ou hostname externo, criado para que usuários possam se conectar à essas fontes de dados estando fora da rede da empresa e sem a necessidade de uma VPN, mas o servidor só reconhece os endereços internos (IP/Hostname) e ele não consegue configurar o Power BI Gateway corretamente porque dá erro quando ele tenta adicionar a fonte de dados.
Por isso, resolvi criar esse artigo, com duas soluções extremamente simples, para que isso possa ser útil para as pessoas da comunidade, e não só os meus clientes de BI.
Algumas pessoas que desenvolvem relatórios no Power BI estão dentro da rede e outras acessam pelo IP público
O Power BI Gateway está instalado e configurado no servidor do banco de dados, com a fonte de dados já criada
O usuário que acessa de forma externa, consegue acessar o banco e criar o relatório normalmente dentro do Power BI Desktop:
Quando um usuário de dentro da rede publica o relatório, ele funciona normalmente. Mas quando um usuário que faz o acesso externo publica um relatório, acontece essa mensagem de erro:
Não há nenhum gateway para acessar a fonte de dados DW
E aà quando você clica em “exibir detalhes”, vai ver essa mensagem de erro:
Vamos tentar adicionar a fonte de dados ao Gateway então:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)
Como era de se esperar, o servidor não está reconhecendo esse endereço externo que esses usuários estão acessando, e por isso, a conexão com o Gateway não está funcionando. A mesma coisa aconteceria se o acesso externo fosse ao IP 189.123.123.123, por exemplo, e o IP interno do servidor de banco fosse 192.168.0.27, por exemplo.
Para conseguir fazer com que o servidor do gateway possa reconhecer esse hostname ou IP externo, podemos utilizar essas 2 soluções que vou demonstrar abaixo (se conhecer outras, deixe aqui nos comentários):
Solução 1 – Alias no SQL Server Configuration Manager
É importante realizar essa configuração do driver do Native Client tanto nas versões 32 bits (x86) quanto na 64 bits (x64), pois alguns softwares que acessam o banco só existem na versão 32 bits (ex: SSMS) e já outros costumam ser utilizados na versão 64 bits (Ex: Power BI Desktop).
Para que esse apontamento funcione, você precisará digitar o IP para onde o host escolhido deve apontar, deixar um espaço em branco e depois colocar o hostname que será afetado por esse apontamento manual:
E ao fazer isso, qualquer software que tente utilizar esse hostname, para qualquer tipo de protocolo ou porta, irá tentar a conexão no IP informado no arquivo de hosts (192.168.31.230, no caso do exemplo).
Assim como o próprio SQL Server Management Studio (SSMS), Power BI e tantos outros: