Nos modelos semânticos do Power BI temos a possibilidade de acessos aos dados através de XMLA endpoint (capacidade Premium), que nos permite aceder aos dados do nosso modelo através de uma ferramenta como o SQL Server Management Studio. O acesso a estes dados está baseado nas definições que damos aos nossos utilizadores no workspace e no próprio modelo semântico.
Com o surgimento do Fabric e a disponibilização de Lakehouse e Warehouse, que armazenam os dados no Onelake, também foi lançado o acesso aos dados através de SQL endpoint.
SQL endpoint para Lakehouse/Warehouse
O SQL endpoint é uma ligação que permite uma experiência de acessos as tabelas do Lakehouse ou do Warehouse baseada em SQL, assim podemos analisar os nossos dados utilizando T-SQL.
Este acesso T-SQL é apenas de leitura, no entanto tem a flexibilidade para a criação de funções, definição de vistas e implementação de object level security (OLS) para gestão e acesso a estrutura de dados de forma efetiva.
O acesso ao SQL endpoint é dado através das permissões no workspace sendo que qualquer um dos utilizadores adicionado ao workspace pode fazer utilização do mesmo para ler os dados guardados nas tabelas.
Tendo em consideração que o Fabric tem por base uma experiência baseada no tipo de utilizador temos também a opção de para o lakehouse/ warehouse definir o acesso de um utilizador apenas ao SQL endpoint sem necessidade de adicionar esse mesmo utilizador ao workspace.
Vamos então ver como podemos realizar a configuração do acesso ao SQL endpoint e o resultado. O exemplo será efetuado num lakehouse, mas as opções são idênticas para um warehouse.
Definições do SQL Endpoint connection
O SQL endpoint é criado aquando da criação do lakehouse/warehouse para sabermos o endereço do mesmo temos de realizar os seguintes passos:
- Abrir o lakehouse
- Ir a definições
- Escolher o menu SQL Analytics endpoint
- Copiar a SQL connection string

Também temos disponível o SQL endpoint dentro do Fabric no canto superior direito do nosso lakehouse

Configuração de acesso ao SQL endpoint
Como referido o acesso ao SQL endpoint pode ser realizado adicionado o utilizador ao workspace


Neste caso os utilizadores terão acesso a todos os artefactos que estiverem no workspace. No entanto se quisermos configurar o acesso específico a um determinado SQL endpoint podemos utilizar a opções da gestão de permissões do lakehouse/warehouse
- Selecionar o botão de contexto do lakehouse (…)
- Entrar na opção Manage Permissions

- Adicionar utilizador no botão no canto superior esquerdo
- Introduzir o endereço de email ou nome do utilizador
- Selecionar a opção Read all SQL endpoint data


Ter em atenção que o acesso por esta via pode demorar algum tempo a ser implementado
Acesso ao SQL endpoint
Para acesso aos dados podemos utilizar qualquer ferramenta de leitura SQL sendo que para o exemplo vou utilizar o SQL Server Management Studio.
- Abrir uma nova ligação no SSMS
- Escolher Database engine
- No Server Name colar o endereço do SQL endpoint que está nas definições do lakehouse
- Selecionar a opção de autenticação: Microsoft Entra MFA
- Concluir a autenticação no browser

- Caso o utilizador apenas tenha acesso a um único lakehouse devem definir a base de dados nas propriedades da ligação

Temos assim o acesso e podemos realizar as consultas em SQL que necessitarmos.
Alerto para o fato de que este SQL endpoint também pode ser utilizado para gerar relatórios Power BI através da ligação de SQL Server utilizando o endereço do SQL Endpoint como SQL server.
SQL endpoint para SQL Database
Em novembro de 2024 com o surgimento das SQL Database, temos uma nova forma de armazenamento dos dados, esta funcionalidade também tem por base o armazenamento dos dados no Onelake, no entanto temos a familiaridade do SQL server e todas as suas funcionalidades da arquitetura de dados.
Neste artigo não me vou focar na forma de criar uma SQL Database, no entanto é de referir que temos agora disponível a criação de funções e views, tal como no lakehouse, mas também podemos criar stored procedures assim como toda a criação de tabelas e definições através de SQL.
Tal como no lakehouse/warehouse o acesso ao SQL endpoint é realizado através das definições e as opções de segurança são similares às referidas anteriormente sendo que um utilizador pode ter acesso via o acesso ao workspace ou sendo adicionado diretamente ao SQL endpoint.
No entanto existe um passo adicional de segurança que temos de realizar caso queiramos aceder aos nossos dados. Sendo uma base de dados de SQL existe uma camada adicional de segurança sendo possível definir as permissões de cada utilizador.
Assim temos a possibilidade de definir o acesso a realizar: SELECT, INSERT, UPDATE, DELETE, EXECUTE.
Vamos então verificar como podemos configurar o acesso ao SQL endpoint assim como as definições de segurança adicional que temos de realizar para termos os acessos corretos por parte dos nossos utilizadores.
Definições do SQL Endpoint connection
O SQL endpoint é criado aquando da criação do lakehouse/warehouse para sabermos o endereço do mesmo temos de realizar os seguintes passos:
- Abrir o lakehouse
- Ir a definições
- Escolher o menu Connection String
- Escolher uma das opções ADO.NET, JDBC, ODBC, PHP, Go
De acordo com cada opção teremos de copiar a string correspondente ao SQL Server e a Base de dados sendo os campos abaixo os necessários
- ADO.NET: Datasource / Catalog
- JDBC: sqlserver / database
- ODBC: Server / Database
- PHP: $server / $database
- Go: server / database

Neste caso apresento a opção do PHP uma vez que tem a informação com uma leitura mais facilitada.
Configuração de acesso ao SQL endpoint
As definições de acesso ao SQL endpoint para cada utilizador são realizadas da mesma maneira do lakehouse/warehouse através das permissões do workspace ou do menu de contexto da SQL database.
Adicionar utilizadores aos papeis da base de dados
Tal como referido anteriormente temos para as SQL databases um nível de segurança adicional que nos permite definir qual o tipo de acessos que cada utilizador tem assim podemos utilizar os papéis já predefinidos (owner, datareader, datawriter ou ddladmin) assim como definir papeis personalizados onde podemos definir os acessos de SELECT, INSERT, UPDATE, DELETE, EXECUTE além de quais os esquemas que esse utilizador poderá aceder. Esta funcionalidade permite uma definição granular do tipo de acesso.
Para configurar estes papeis temos de seguir os passos abaixo:
- Entrar na SQL Database
- Escolhe o menu Manage SQL Security
- Criar tipo de acesso:
- Selecionar o botão New Role
- Escrever o nome do novo tipo acesso
- Selecionar os esquemas e tipos de acessos
- Associar/Remover utilizador a papel:
- Selecionar o papel que queremos atribuir
- Carregar no botão Manage Access
- Adicionar o utilizador




Nos papéis adicionados pelo utilizador também temos disponível as opções de Apagar e Editar

Acesso ao SQL endpoint
Para acesso aos dados no SQL Server Management Studio.
- Abrir uma nova ligação no SSMS
- Escolher Database engine
- No Server Name colar o texto do Datasource, sqlserver ou server de acordo com o connection string selecionado
- Selecionar a opção de autenticação: Microsoft Entra MFA
- Concluir a autenticação no browser
- Ter atenção a escolher a base de dados de acesso nas definições da connection properties colando o valor do catalog ou database de acordo com o connection string selecionado
Uma nota importante para a ligação ao SQL Database é que se não definirem os papeis para os utilizadores eles poderão conseguir aceder a base de dados, mas não ver nenhuma das tabelas, uma vez que o acesso dado através das definições é para a SQL Database no seu todo, mas o acesso individual é gerido através do menu Manage SQL Security.
Tal como para o lakehouse o SQL endpoint também pode ser utilizado para gerar relatórios Power BI através da ligação de SQL Server.