You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可通过Azure Databricks连接Synapse无服务器SQL池?

Azure Databricks连接Synapse无服务器SQL池问题解决

Azure Databricks完全支持连接Synapse无服务器SQL池,你遇到的登录报错是无服务器池的JDBC连接配置和专用池存在差异导致的,可按以下步骤排查修复:

1. 修正JDBC连接参数

Synapse无服务器SQL池强制要求加密连接,你当前的URL缺少加密、证书校验相关的必填参数,修正后的完整配置如下:

synapse_sql_username = 'databricks' 
synapse_sql_password = 'TestPassword2345'
synapse_sql_server = "linkedvsnps98765BIproject-ondemand.sql.azuresynapse.net" 
synapse_sql_database= "ServerlessTest"

# 新增加密、证书校验、超时参数,显式指定1433端口
synapse_sql_url = f"jdbc:sqlserver://{synapse_sql_server}:1433;databaseName={synapse_sql_database};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;"

# 执行非查询语句的连接逻辑
sql_driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
sql_con = sql_driver_manager.getConnection(synapse_sql_url, synapse_sql_username, synapse_sql_password)

2. 校验权限配置

虽然凭证在SSMS中可正常使用,仍需确认以下权限配置:

  • 确认databricks SQL用户已经在无服务器池的master库和ServerlessTest库都完成了用户映射
  • 确认该用户拥有ServerlessTest库的CREATE VIEW、CREATE EXTERNAL TABLE等操作权限,可在SSMS中执行以下语句验证:
USE ServerlessTest
GO
EXEC sp_helprotect @username = 'databricks'

3. 可选优化方案

如果使用Databricks Runtime 11.x及以上版本,推荐使用内置的Synapse专用连接器替代直接调用JDBC DriverManager,稳定性和性能更优,操作示例如下:

# 读取无服务器池表示例
df = spark.read \
  .format("com.databricks.spark.sqldw") \
  .option("url", synapse_sql_url) \
  .option("user", synapse_sql_username) \
  .option("password", synapse_sql_password) \
  .option("dbtable", "目标表名") \
  .load()

其他排查点

如果修改后仍报错,可按以下顺序排查:

  • 检查Synapse无服务器池的防火墙规则,已放通Databricks工作区的所有出站IP
  • 确认ServerlessTest数据库名称拼写和实际创建完全一致
  • 如果你手动指定了JDBC驱动版本,升级到mssql-jdbc 9.4及以上版本即可兼容无服务器池

内容的提问来源于stack exchange,提问作者OrganicMustard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:24:04