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

使用ODBC Driver 17 for SQL Server连接Python与MS SQL Server遇超时问题求助

解决ODBC Driver 17 for SQL Server连接MS SQL Server超时问题

针对你遇到的pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired')错误,可按以下步骤排查解决:

1. 验证服务器可达性与实例名称

  • 替换主机名为IP地址测试,比如将Server=PROZONEVIC-01改为Server=192.168.x.x(替换为实际服务器IP),避免DNS解析问题。如果是命名实例,需加上实例名,格式为Server=PROZONEVIC-01\SQLEXPRESS。
  • 在终端执行ping PROZONEVIC-01测试网络连通性,若不通则排查防火墙、路由或服务器网络配置。
  • 测试SQL Server默认端口(1433)的连通性:Linux下用nc -zv PROZONEVIC-01 1433,Windows用telnet PROZONEVIC-01 1433,不通则检查SQL Server是否开启TCP/IP协议,以及防火墙是否放行1433端口。

2. 检查SQL Server基础配置

  • 确认SQL Server服务处于运行状态,可通过SQL Server配置管理器查看。
  • 在SQL Server配置管理器中,检查对应实例的TCP/IP协议已启用,且监听端口设置正确(默认1433)。
  • 开启远程连接权限:在SSMS中右键服务器→属性→连接,勾选“允许远程连接到此服务器”。

3. 调整身份验证方式

你的pyodbc安装路径显示为Linux环境,Trusted_Connection=yes(Windows身份验证)在Linux下需要配置Kerberos,若未配置可改用SQL Server身份验证:
修改连接字符串为:

cnxn = pyodbc.connect(r'Driver=ODBC Driver 17 for SQL Server;Server=PROZONEVIC-01;Database=DescartesShips;UID=你的SQL用户名;PWD=你的SQL密码;')

注意需确保SQL Server已启用混合模式身份验证,且该用户拥有DescartesShips数据库的访问权限。

4. 检查驱动与pyodbc兼容性

  • 执行odbcinst -q -d查看已安装的ODBC驱动,确认输出包含ODBC Driver 17 for SQL Server,若缺失需重新安装驱动。
  • 尝试降低pyodbc版本至4.0.35,部分新版本可能存在兼容性问题:
pip install pyodbc==4.0.35

5. 增加连接超时时间调试

在连接字符串中添加超时参数,排除临时网络延迟影响:

cnxn = pyodbc.connect(r'Driver=ODBC Driver 17 for SQL Server;Server=PROZONEVIC-01;Database=DescartesShips;Trusted_Connection=yes;Timeout=30;')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:50:12