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

启用Unity Catalog的Azure Databricks中ODBC Driver安装失败求助

在启用Unity Catalog的Azure Databricks Runtime 11.3中安装SQL Server ODBC驱动的解决方案

问题背景

尝试用pyodbc连接SQL Server时触发驱动缺失错误:

import pyodbc
sql_server_url='server_url'
sqlDB='db-dev'
SQL_DB_USER='user'
SQL_DB_PASS='123'
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + sql_server_url +';DATABASE=' + sqlDB + ';UID='+SQL_DB_USER+';PWD='+SQL_DB_PASS)

报错信息:

('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

直接通过%sh命令安装驱动时,因权限限制失败:

%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 msodbcsql17

错误提示:

E: This command can only be used by root.
/bin/bash: line 1: /etc/apt/sources.list.d/mssql-release.list: Permission denied
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

该操作在标准Databricks版本中正常,但在启用Unity Catalog的Runtime 11.3中受限。

解决方案

启用Unity Catalog的Databricks Runtime限制了交互式shell的root权限操作,必须通过集群初始化脚本以root权限完成驱动安装,步骤如下:

1. 创建并上传初始化脚本

使用dbutils.fs.put命令将安装脚本上传到DBFS:

dbutils.fs.put("/databricks/init_scripts/install_sql_odbc.sh", """
#!/bin/bash
# 添加Microsoft官方密钥与源配置
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
# Runtime 11.3基于Ubuntu 18.04,需对应正确的源版本
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
# 更新源并静默安装ODBC驱动
apt-get update
ACCEPT_EULA=Y apt-get -q -y install msodbcsql17
""", True)

2. 配置集群加载初始化脚本

  • 打开目标集群的配置页面,进入高级选项 -> 初始化脚本
  • 点击「添加」,选择「DBFS」并输入路径:dbfs:/databricks/init_scripts/install_sql_odbc.sh
  • 保存配置并重启集群,脚本会在集群启动阶段自动以root权限执行安装

3. 验证安装结果

集群重启后,运行以下命令确认驱动已成功安装:

%sh
ls /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17*.so

若输出类似/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.2.1.so的文件路径,说明安装完成,此时重新运行pyodbc连接代码即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:21