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

Azure Databricks中pyodbc连接SQL Server提示找不到ODBC驱动17的问题

解决Azure Databricks中ODBC驱动找不到的问题

1. 修正集群初始化脚本的Ubuntu源版本

Databricks多数Runtime版本使用的是Ubuntu 18.04或20.04,你当前脚本用的是Ubuntu 16.04的源,可能导致驱动安装失败。替换成对应版本的源,修改后的初始化脚本如下:

#!/bin/bash
# 确认Ubuntu版本后替换对应源,这里以18.04为例,若为20.04则改为20.04
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
apt-get update -y
ACCEPT_EULA=Y apt-get install -y msodbcsql17
apt-get -y install unixodbc-dev
apt-get install -y python3-pip
pip3 install --upgrade pyodbc

修改后重新上传脚本,重启集群使脚本生效。

2. 验证驱动是否成功安装

集群重启后,在Notebook中运行以下命令检查已安装的ODBC驱动:

odbcinst -q -d

如果输出包含[ODBC Driver 17 for SQL Server],说明驱动安装成功;若未出现,查看集群的初始化日志,排查安装过程中的报错(比如网络问题导致包下载失败)。

3. 调整连接字符串的驱动配置

如果驱动已安装但仍报错,尝试两种调整方式:

方式一:使用驱动的绝对路径

先通过以下命令找到驱动的实际路径:

find / -name "libmsodbcsql-17.so" 2>/dev/null

得到路径后(通常为/usr/lib/x86_64-linux-gnu/libmsodbcsql-17.so),修改连接字符串:

connect_string = f"DRIVER={driver_path};"
connect_string += f"SERVER={jdbchostname},{jdbcport};"
connect_string += f"DATABASE={db};"
connect_string += f"UID={username};"
connect_string += f"PWD={pwd}"

conn = pyodbc.connect(connect_string)
cursor = conn.cursor()

方式二:核对驱动名称的拼写

确保驱动名称和实际安装的完全一致,部分环境中驱动名称严格为{ODBC Driver 17 for SQL Server}(注意空格和大小写),若之前的名称有误,修正后重试。

4. 替代方案:使用Databricks内置JDBC连接

如果ODBC方式仍有问题,可以改用Databricks自带的SQL Server JDBC驱动,无需手动安装驱动:

df = spark.read.jdbc(
    url=f"jdbc:sqlserver://{jdbchostname}:{jdbcport};databaseName={db}",
    table="your_target_table",
    properties={
        "user": username,
        "password": pwd,
        "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    }
)

这种方式更稳定,适合大多数Databricks环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:43