使用pd.read_sql()连接SQL Server(ODBC17)遇SSL内部错误求助
解决pd.read_sql()连接SQL Server时的SSL Provider内部错误
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('08001',
'[08001] [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]SSL
Provider: [error:0A0C0103:SSL routines::internal error] (-1)
(SQLDriverConnect)')
以下是可行的解决方法:
禁用SSL证书验证(临时方案,注意安全风险)
在数据库连接字符串中添加TrustServerCertificate=yes参数。使用SQLAlchemy时,连接URL示例:mssql+pyodbc://<用户名>:<密码>@<服务器地址>/<数据库名>?driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes若直接使用pyodbc连接,可在参数中加入该配置:
import pyodbc conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};' 'SERVER=<服务器地址>;' 'DATABASE=<数据库名>;' 'UID=<用户名>;' 'PWD=<密码>;' 'TrustServerCertificate=yes' )更新ODBC驱动版本
卸载当前的ODBC Driver 17 for SQL Server,重新安装微软官方发布的最新版本,旧版本驱动可能存在SSL协议兼容性问题。调整系统OpenSSL版本
该错误常因系统OpenSSL版本与ODBC驱动不兼容导致,若当前使用OpenSSL 3.x系列,可尝试降级至1.1.x版本;反之则升级到匹配的稳定版本,具体操作根据操作系统(Linux/Windows)的包管理器或环境变量设置完成。检查SQL Server端SSL配置
确认服务器的SSL证书是否有效、未过期,若使用自签名证书需确保配置正确;同时检查服务器是否强制要求SSL连接,可临时关闭SSL强制验证测试连接是否正常。
内容的提问来源于stack exchange,提问作者Megha Maheshwari
相关产品推荐
相关产品推荐

