Microsoft Fabric / Synapse
This guide walks you through connecting Microsoft Fabric or Azure Synapse Analytics to Solid so you can get insights into your data lineage, usage, and quality.
Overview
Solid requires access to:
- The schema of your Fabric/Synapse warehouse or dedicated SQL pool
- Query history from system DMVs
- Read-only grants on your data — required for Solid's Text2SQL engine to generate and validate SQL
Note: You will need an account with permission to create logins/users and grant database roles (e.g., a Fabric/Synapse admin) to complete setup.
You have two options for connecting Fabric/Synapse to Solid:
| Option | Best For | What You'll Do |
|---|---|---|
| Automatic Pull (Recommended) | Ongoing use and continuous monitoring | Create a service account that runs automatically |
| Manual Pull | Quick proof of concept or one-time setup | Export data manually and upload it |
What Is Collected
| Category | What | Why |
|---|---|---|
| Metadata | Table/column definitions, data types, constraints | To build the data catalog |
| Query History | Query text, executing user, timestamps, duration | To learn usage patterns and seed benchmarks |
| Table Usage | Row insert/update/delete counts per table | To surface active tables and detect stale data |
| Data Profiling | Sampled column values (via granted db_datareader) | Required for Text2SQL generation/validation, and to improve SQL filter accuracy |
Automatic Pull (Recommended)
Best for: Production use with continuous monitoring and updates.
Step 1: Create the Solid Login and User
Run this script while connected as an admin on your warehouse or dedicated SQL pool:
-- Create a login for Solid (skip if using a Microsoft Entra service principal)
CREATE LOGIN solid_data WITH PASSWORD = '{strong_password}';
-- Create a database user mapped to that login
CREATE USER solid_data FOR LOGIN solid_data;
-- Grant read-only access to the database
EXEC sp_addrolemember 'db_datareader', 'solid_data';
-- Grant visibility into query history DMVs
GRANT VIEW DATABASE STATE TO solid_data;If you use Microsoft Entra ID (Azure AD) authentication instead of SQL logins, create an external user for Solid's service principal and grant it the same db_datareader role and VIEW DATABASE STATE permission.
Step 2: Note Your Connection Details
You'll need:
- Server name (e.g.,
yourworkspace.sql.azuresynapse.netor your Fabric SQL endpoint) - Database name
- Username:
solid_data(or your service principal's client ID, if using Entra ID) - Password or client secret
Step 3: Configure Solid
- Log into the Solid platform
- Navigate to Settings → Integrations → Microsoft Fabric / Synapse
- Enter your connection details and credentials
- Click Test Connection
- Select which schemas you want Solid to monitor
- Click Save
Solid will begin syncing your Fabric/Synapse metadata and query history.
Manual Pull
Best for: Testing Solid or if you can't grant direct database access yet.
Steps
- Run the queries below in your SQL client
- Export each result as a CSV file
- Upload to the Solid Azure Storage container
Metadata
SELECT
c.TABLE_SCHEMA,
c.TABLE_NAME,
c.COLUMN_NAME,
c.ORDINAL_POSITION,
c.DATA_TYPE,
c.IS_NULLABLE,
c.COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_SCHEMA IN ({schema_list})
ORDER BY c.TABLE_SCHEMA, c.TABLE_NAME, c.ORDINAL_POSITION;Query History
SELECT
r.request_id,
r.session_id,
r.submit_time,
r.start_time,
r.end_time,
r.status,
r.command AS query_text
FROM sys.dm_pdw_exec_requests r
WHERE r.submit_time > '{last_collect_time}'
ORDER BY r.submit_time DESC;Note:
sys.dm_pdw_exec_requestsapplies to dedicated SQL pools. For Fabric warehouses and serverless SQL pools, usesys.dm_exec_query_statsandsys.dm_exec_sql_textinstead.
Permissions Needed
| Permission/Grant | Purpose |
|---|---|
db_datareader (database role) | Grants read-only access to the database for metadata and data profiling |
VIEW DATABASE STATE | Grants visibility into query history DMVs (e.g., sys.dm_pdw_exec_requests) |
Troubleshooting
Connection Issues
- Verify the server name and database name are correct and reachable from Solid's network
- Check your firewall rules allow inbound connections from Solid's static IP addresses
- Confirm the login/user hasn't expired or been disabled
Permission Issues
- Check role membership:
SELECT dp.name AS role_name, dp2.name AS member_name FROM sys.database_role_members drm JOIN sys.database_principals dp ON drm.role_principal_id = dp.principal_id JOIN sys.database_principals dp2 ON drm.member_principal_id = dp2.principal_id WHERE dp2.name = 'solid_data'; - Confirm
VIEW DATABASE STATEwas granted — without it, query history DMVs return no rows
Security Notes
- The service account has read-only access —
db_datareadergrants no write access - Use a strong, unique password (or rotate service principal client secrets) per your organization's policy
- Restrict database access to Solid's static IP addresses via your firewall rules
- Scope grants only to the schemas Solid needs to monitor
Updated 8 days ago
