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

Databricks社区版无法通过JDBC连接本地SQL Server问题

解决方案:Databricks社区版连接本地SQL Server失败问题

核心问题根源

Databricks社区版的集群运行在云端,无法直接访问本地局域网内的SQL Server——你用的127.0.0.1/localhost指向的是云端集群自身的容器,而非你的本地机器;内网主机名DESKTOP-N1VTIO2也仅能在你的本地局域网内生效,云端无法解析。


分步解决步骤

1. 实现本地SQL Server的公网可访问性

你需要通过内网穿透工具(如ngrok、FRP)将本地SQL Server的1433端口映射到公网可访问的地址和端口:

  • 以ngrok为例,执行命令:ngrok tcp 1433,工具会生成类似0.tcp.jp.ngrok.io:12345的公网地址
  • 后续连接串中需使用这个公网地址和端口,而非本地IP或主机名

2. 强化网络与SQL Server配置检查

  • 防火墙设置:本地机器防火墙必须允许1433端口的入站连接(若用穿透工具,需允许穿透工具的流量);同时确认云端Databricks集群的出口IP未被你的网络拦截
  • SQL Server远程连接:在SSMS中右键实例→属性→连接,勾选「允许远程连接到此服务器」
  • TCP/IP配置补全:在SQL Server配置管理器中,确保TCP/IP协议的IPAll项中TCP端口设为1433,且所有需要的IP地址状态为「启用」,之后重启SQL Server服务

3. 调整连接代码(以JDBC为例)

将连接串替换为穿透后的公网地址,示例如下:

table = (spark.read
  .format("jdbc")
  .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
  # 替换为你的ngrok公网地址和端口
  .option("url", "jdbc:sqlserver://0.tcp.jp.ngrok.io:12345;database=TestDatabase")
  .option("dbtable", "dbo.table1")
  .option("user", "你的SQL登录账号")
  .option("password", "你的SQL登录密码")
  .load()
)

安全提醒

  • 公网暴露SQL Server端口存在安全风险,仅建议用于测试场景
  • 可在SQL Server中限制登录IP为Databricks集群的出口IP,并设置强密码
  • 免费内网穿透工具的公网地址/端口可能随机变动,测试时需确认地址有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:42:43