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:

OptionBest ForWhat You'll Do
Automatic Pull (Recommended)Ongoing use and continuous monitoringCreate a service account that runs automatically
Manual PullQuick proof of concept or one-time setupExport data manually and upload it

What Is Collected

CategoryWhatWhy
MetadataTable/column definitions, data types, constraintsTo build the data catalog
Query HistoryQuery text, executing user, timestamps, durationTo learn usage patterns and seed benchmarks
Table UsageRow insert/update/delete counts per tableTo surface active tables and detect stale data
Data ProfilingSampled 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.net or 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

  1. Log into the Solid platform
  2. Navigate to Settings → Integrations → Microsoft Fabric / Synapse
  3. Enter your connection details and credentials
  4. Click Test Connection
  5. Select which schemas you want Solid to monitor
  6. 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

  1. Run the queries below in your SQL client
  2. Export each result as a CSV file
  3. 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_requests applies to dedicated SQL pools. For Fabric warehouses and serverless SQL pools, use sys.dm_exec_query_stats and sys.dm_exec_sql_text instead.


Permissions Needed

Permission/GrantPurpose
db_datareader (database role)Grants read-only access to the database for metadata and data profiling
VIEW DATABASE STATEGrants visibility into query history DMVs (e.g., sys.dm_pdw_exec_requests)

Troubleshooting

Connection Issues

  1. Verify the server name and database name are correct and reachable from Solid's network
  2. Check your firewall rules allow inbound connections from Solid's static IP addresses
  3. Confirm the login/user hasn't expired or been disabled

Permission Issues

  1. 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';
  2. Confirm VIEW DATABASE STATE was granted — without it, query history DMVs return no rows

Security Notes

  • The service account has read-only accessdb_datareader grants 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

Did this page help you?