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

Mac环境下Jupyter Notebook连接Azure数据库失败求助

Mac下Jupyter Notebook连接Azure SQL数据库失败排查方案

我在Mac系统的Jupyter Notebook中运行Python脚本连接Azure数据库时,始终无法建立连接。

我的代码如下:

# Create the SQLAlchemy engine
connection_string = "Driver=/usr/local/lib/libmsodbcsql.18.dylib;Server=tcp:XXX.database.windows.net,1433;Database=XXX;Uid=XXX;Pwd={XXX};Encrypt=yes;TrustServerCertificate=yes;Connection Timeout=30;ssl_version=TLSv1.2"

engine = sqlalchemy.create_engine(f"mssql+pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}")

出现的错误信息:

Error: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish a connection (0) (SQLDriverConnect)')
(Background on this error at: http://sqlalche.me/e/14/e3q8)

我已尝试调整数据库设置,但问题依旧,请求协助排查原因。


排查步骤

  • 验证ODBC驱动路径:确认/usr/local/lib/libmsodbcsql.18.dylib文件真实存在。终端执行ls /usr/local/lib/libmsodbcsql.18.dylib检查,若不存在,重新安装ODBC Driver 18 for SQL Server。
  • 检查Azure防火墙规则:登录Azure门户,确认Mac的公网IP已加入Azure SQL数据库的防火墙允许列表;若用动态IP,可临时开启「允许Azure服务和资源访问此服务器」选项测试。
  • 核对连接参数:
    • 确认Server地址格式正确,tcp:前缀和1433端口不能少;
    • Uid需使用用户名@服务器名格式(如admin@xxx.database.windows.net),仅填用户名可能失败;
    • 确认Pwd是正确的数据库密码,特殊字符需注意转义;
  • 移除ssl_version参数:ODBC Driver 18默认使用TLS 1.2,手动指定该参数可能引发兼容性问题,尝试从连接字符串中删除;
  • 测试端口连通性:终端执行nc -zv xxx.database.windows.net 1433,若不通,排查网络环境(比如公司防火墙是否拦截1433端口);
  • 升级依赖版本:检查sqlalchemy和pyodbc版本是否兼容,执行pip list | grep -E "sqlalchemy|pyodbc"查看,建议升级到最新稳定版:pip install --upgrade sqlalchemy pyodbc;
  • 更换连接字符串格式:尝试使用SQLAlchemy原生URI格式,避免手动urlencode:
    engine = sqlalchemy.create_engine(
        "mssql+pyodbc://用户名:密码@xxx.database.windows.net:1433/数据库名?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=yes&TrustServerCertificate=yes&Connection+Timeout=30"
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:12:07