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是正确的数据库密码,特殊字符需注意转义;
- 确认Server地址格式正确,
- 移除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
相关产品推荐
相关产品推荐

