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

启用Integrated Security=True时pyodbc为何用空登录名连接失败?

解决pyodbc连接SQL Server时“登录失败,用户名为空”的问题

可能的原因及解决方法

1. 替换身份验证参数写法

把连接字符串里的Integrated Security=True换成Trusted_Connection=Yes,部分ODBC驱动对后者的兼容性更好:

import pyodbc

connection_string = 'Driver={ODBC Driver 17 for SQL Server};Server=.;Database=testdb;Trusted_Connection=Yes;'
connection = pyodbc.connect(connection_string)

2. 检查驱动与Python的位数匹配

如果Python版本和ODBC驱动的位数不匹配(比如Python是32位,驱动是64位),会导致身份验证信息无法正确传递:

  • 打开命令提示符,输入python --version查看位数(例如显示[MSC v.1929 64 bit (AMD64)]即为64位)
  • 卸载不匹配的ODBC驱动,安装对应位数的版本

3. 明确指定服务器实例名

有时候Server=.无法正确解析本地SQL Server实例,尝试换成具体名称:

  • 默认实例用Server=localhost或Server=(local)
  • 命名实例(如SQLEXPRESS)用Server=.\SQLEXPRESS

4. 清除连接字符串的隐藏字符

复制粘贴可能带入全角空格或不可见字符,导致属性解析错误。手动重新输入连接字符串,避免复制操作。

5. 确认数据库权限配置

虽然SSMS能连接,仍需确认当前Windows用户对testdb有连接权限:

  • 打开SSMS,用Windows身份验证登录,展开安全性->登录名,找到你的Windows用户(格式一般为DOMAIN\username)
  • 右键选择属性,切换到用户映射,确认testdb已勾选,且至少分配了public角色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:15:59