如何在Databricks中配置pyodbc使用SQL Server驱动连接数据库
在Databricks中安装
{SQL Server} ODBC驱动并解决连接问题 问题背景
我在本地工作虚拟机的Jupyter Notebook中,通过pyodbc使用{SQL Server}驱动可以正常连接工作数据库,但在Databricks中安装了ODBC Driver 17 for SQL Server后却无法连接。需要在Databricks环境中安装旧版的{SQL Server}驱动,复现本地的连接环境。
安装{SQL Server}驱动的步骤
{SQL Server}对应的是微软旧版ODBC驱动(通常为ODBC Driver 13 for SQL Server),可以通过以下Shell命令在Databricks集群中安装:
%sh curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list sudo apt-get update sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql13
安装完成后,运行以下Python代码验证驱动是否存在:
import pyodbc print(pyodbc.drivers())
此时输出列表中应该会出现SQL Server。
连接配置注意事项
- 身份认证问题:本地虚拟机使用
Trusted_Connection=yes能成功,是因为虚拟机的Windows凭据被直接复用。但Databricks集群是托管云环境,默认无法直接使用本地AD凭据。如果工作数据库依赖Windows身份验证,需要:- 改用SQL Server身份验证,在连接字符串中添加
UID=your_username;PWD=your_password; - 配置Kerberos认证来支持SSPI(需结合企业AD和云平台的Kerberos集成)
- 改用SQL Server身份验证,在连接字符串中添加
- 网络连通性:确保Databricks集群所在的VPC/虚拟网络与目标SQL Server的网络打通,防火墙、安全组规则允许集群访问SQL Server的端口(默认1433)。
关于Databricks的疑问解答
- Databricks不是传统虚拟机,它是托管的大数据平台,集群由多个云虚拟机实例组成,Notebook代码运行在集群的worker节点上,不属于嵌套虚拟机。
- 本地虚拟机能连接成功是因为网络和身份环境匹配,Databricks不需要额外的URL,只要
SERVER参数填写正确的实例名(如server_name\instance_name或server_ip,port)即可,核心是解决网络和身份认证的适配问题。
内容的提问来源于stack exchange,提问作者spareTimeCoder
相关产品推荐
相关产品推荐

