SteveOstrowski
Databricks Employee
Databricks Employee

Hi @Oumeima,

Your permissions and change tracking setup all look correct based on the output you shared, so the timeout during the "Database Setup" validation step is most likely a network connectivity issue between the Databricks control plane (where the Ingestion Gateway pipeline runs) and your Azure SQL Database. Here are the areas to investigate:

NETWORK CONNECTIVITY

The "Database Setup" step launches the Ingestion Gateway pipeline, which needs to reach your Azure SQL Database over port 1433. If the gateway cannot establish a connection, it will spin until the validation times out with the message you are seeing.

Check the following:

1. Azure SQL Database firewall rules: Make sure the Databricks control plane IPs for your region are allowed. If your Azure SQL Database has "Deny public network access" enabled, you will need to set up a Private Link or VNet-injected connection. You can find the control plane IP addresses for your region in the Databricks documentation:
https://docs.databricks.com/en/resources/supported-regions.html

2. If you are using Private Link or a VNet service endpoint, confirm that the Databricks serverless compute (which runs the Ingestion Gateway) can route to your Azure SQL Database. Serverless compute uses a different networking path than classic clusters, so even if a notebook on a classic cluster can reach the database, the Ingestion Gateway might not be able to.

3. If your Azure SQL Database is behind a virtual network rule, make sure the "Allow Azure services and resources to access this server" option is enabled in the Azure SQL Server firewall settings, or configure the appropriate private endpoint.

INGESTION GATEWAY PIPELINE STATUS

The error message itself suggests checking whether the Ingestion Gateway pipeline is running. You can verify this:

1. Go to the Workflows section in your Databricks workspace.
2. Look for the pipeline associated with your Lakeflow Connect ingestion. It may have been auto-created when you started the setup wizard.
3. Check the pipeline's event log and any error messages. The event log often contains more specific errors (such as connection refused, authentication failures, or timeout details) that the UI wizard does not surface.

If no pipeline was created, or if the pipeline failed to start, that itself could be the root cause. The "Database Setup" step relies on the pipeline being in a running state to execute the validation queries against your source database.

SERVICE PRINCIPAL AUTHENTICATION

Your setup output shows the service principal was granted all the expected permissions. A few additional items to double-check:

1. Confirm that the service principal credentials (client ID and client secret) stored in the Databricks connection are still valid and have not expired.
2. If you are using Azure Active Directory (Entra ID) authentication for the service principal, verify that the Azure SQL Database has Azure AD authentication enabled and that the service principal is a valid AAD user in the database.
3. Make sure the connection in the Databricks catalog (under External Data > Connections) uses the correct hostname, port, and database name. A mismatch in the database name between the connection and the actual database where you ran the utility scripts would cause the validation to fail.

ADDITIONAL TROUBLESHOOTING

1. Try running a simple connectivity test from a Databricks notebook using the same service principal credentials. For example, you can use the JDBC driver:

url = "jdbc:sqlserver://<your-server>.database.windows.net:1433;database=<your-db>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"

df = spark.read.format("jdbc") \
.option("url", url) \
.option("dbtable", "dbo.Table1") \
.option("user", "<client-id>@<tenant-id>") \
.option("password", "<client-secret>") \
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
.option("authentication", "ActiveDirectoryServicePrincipal") \
.load()

df.show()

If this works from a notebook but the Lakeflow Connect wizard still fails, it narrows the issue to the Ingestion Gateway's network path or configuration.

2. Check the Databricks audit logs or the pipeline event log for any additional error details. The timeout message in the UI is a generic wrapper, and the underlying logs typically contain the specific failure reason.

3. If everything checks out, consider reaching out to your Databricks account team or opening a support ticket. They can inspect the Ingestion Gateway pipeline logs from the backend and pinpoint the exact failure in the validation step.

Documentation references:
- Lakeflow Connect overview: https://docs.databricks.com/en/connect/ingestion/index.html
- SQL Server ingestion with Lakeflow Connect: https://docs.databricks.com/en/connect/ingestion/sql-server/sql-server-managed.html
- Network requirements for serverless compute: https://docs.databricks.com/en/compute/serverless/networking.html

* This reply used an agent system I built to research and draft this response based on the wide set of documentation I have available and previous memory. I personally review the draft for any obvious issues and for monitoring system reliability and update it when I detect any drift, but there is still a small chance that something is inaccurate, especially if you are experimenting with brand new features.

If this answer resolves your question, could you mark it as "Accept as Solution"? That helps other users quickly find the correct fix.