python - pyodbc 操作错误 08001 ssl 安全错误
问题描述
我正在尝试使用 pyodbc 从我的笔记本电脑(在 Windows 10 上)通过以下 python 脚本连接到我在 MS SQL Server 2016 上的数据库,并计划将代码部署在 Linux RHEL 6.4 服务器中。
conn=pyodbc.connect('Driver={SQL Server};'
'Server=DB_Instance;'
'Database=DB_Name;'
'UID=user_name;'
'PWD=password;'
'Trusted_Connection=no;');
在我的笔记本电脑上,SQL Server(版本:10.00.17763.01)和 SQL Server Native Client 11.0(版本:2011.110.7493.04)已经可用。
从我的笔记本电脑执行 python 脚本时,我收到以下错误消息。
pyodbc.operationalError: ('08001', '[08001] [Microsoft] [ODBC SQL Server Driver][DBNETLIB]SSL 安全错误 (18) (SQLDriverConnect); [08001] [Microsoft] [ODBC SQL Server Driver][DBNETLIB] ConnectionOpen (SECDoClientHandshake()). (772)')
根据组织标准,在网络中安装了 SQL Server 的 Windows 服务器上禁用了 TLS 1.0。由于我是通过 python 脚本访问数据库,我们暂时无法启用 TLS 1.0。我正在寻找一个方向。任何帮助是极大的赞赏!!
解决方案
戈德汤普森在评论中指出古纳的方向是正确的:
您可以尝试使用 ODBC Driver 17 for SQL Server 看看是否适合您吗?
——戈德·汤普森
Guna 说这很有效:
我面临着不同的错误。在服务器名称之外添加端口号时,问题得到了解决。ODBC 驱动程序名称也需要更新。conn=pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};' 'Server=DB_Instance,port;' 'Database=DB_Name;' 'UID=user_name;' 'PWD=password;' 'Trusted_Connection=no; ');
– 古纳
将此作为社区 Wiki 发布,以便任何搜索者可以快速看到它已被回答。
推荐阅读
- terraform - Terraform:忽略对某个环境变量的更改
- excel - 如果宏代码在源文件中,如何将数据从源文件复制到多个目标文件?
- angular - 未捕获(承诺中):resolvePromise 处的 [object Window]
- java - 为什么我没有得到输出?谁能帮我?
- wordpress - 发布帖子时如何将php代码作为内容传递
- python - “元组”对象没有属性“数据”
- python - 向线性程序纸浆添加惩罚参数
- powershell - 如何在powershell脚本中将webrequest与processid相关联
- oracle - 我们可以在 SpringBoot 中使用 Logstash 从 RDBMS 同步数据吗
- swiftui - SwiftUI View 添加 @Environment(\.presentationMode) 崩溃 .sheet() 演示