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

Pyodbc连接SQL Server失败:用户信息正确但无法连接

解决pyodbc连接SQL Server登录失败及无效连接属性问题

核心问题1:连接串包含pyodbc不支持的参数

报错中的Invalid connection string attribute是关键提示——你用的pool_pre_ping和pool_recycle是SQLAlchemy专属参数,pyodbc原生的connect()方法不支持这些属性,这会导致连接串解析失败,进而触发登录失败的误报。

修改后的连接串

删掉这两个无效参数,同时注意转义Server地址中的反斜杠,调整后的代码:

conn = pyodbc.connect(f'Driver={driver_name}; '
                       'Server=192.168.1.x\\SERVER-NAME\\SQLEXPRESS,1433;'
                       'Database=Warehouse;'
                       'Integrated Security=False;'
                       'Trusted_Connection=no;'
                       'UID=Warehouse;'
                       'PWD=passwordhere;',
                        timeout=1
                      )

核心问题2:用户可能因多次失败登录被锁定

服务器离线期间你的应用多次重试登录,会触发SQL Server的登录失败锁定策略(默认通过Windows组策略或SQL Server安全策略配置)。

检查并解锁用户

在SSMS中执行以下SQL查询,确认用户状态:

SELECT name, is_disabled, lockout_time 
FROM sys.sql_logins 
WHERE name = 'Warehouse';
  • 如果lockout_time不为NULL或is_disabled=1,说明用户被锁定,执行解锁命令:
ALTER LOGIN Warehouse UNLOCK;
  • 若解锁后仍有问题,可临时关闭登录策略再开启(按需操作):
ALTER LOGIN Warehouse WITH CHECK_POLICY = OFF;
ALTER LOGIN Warehouse WITH CHECK_POLICY = ON;

额外排查项

  • 确认身份验证模式:右键SQL Server实例→属性→安全性,确认已启用「SQL Server和Windows身份验证模式」,避免服务器重启后配置重置。
  • 验证端口与实例名:确保192.168.1.x\\SERVER-NAME\\SQLEXPRESS,1433中的实例名、端口正确,服务器重启后SQL Server服务是否正常监听1433端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:10:53