如何使用pyodbc通过Windows身份验证连接SQL Server数据库
问题原因
你遇到的报错是由于连接串身份验证参数配置与Azure SQL Database的适配性问题导致的:Trusted_Connection=Yes参数仅适用于本地部署SQL Server的原生Windows集成认证场景,无法直接用于Azure SQL Database的身份验证,因此会触发空用户身份校验失败的18456错误。
解决方法
你需要根据使用的身份验证方式修改连接串的身份验证参数:
- 如果你要使用和SSMS一致的无密码Windows身份验证(Azure AD集成Windows认证):
需将连接串中Trusted_Connection=Yes替换为Authentication=ActiveDirectoryIntegrated,修改后的代码如下:
import pyodbc conndev = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};' 'Server=server124.database.windows.net,1433;' 'Database=db345;' 'Authentication=ActiveDirectoryIntegrated;')
前置要求:运行脚本的Windows账号已同步到Azure AD,且设备已加入Azure AD或完成Azure AD单点登录配置,该账号拥有目标Azure SQL数据库的访问权限。
- 如果你要使用和SSMS一致的Azure Active Directory - Universal with MFA身份验证:
可将身份验证参数设为ActiveDirectoryInteractive,运行脚本时会自动弹出登录窗口完成MFA校验,代码示例如下:
import pyodbc conndev = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};' 'Server=server124.database.windows.net,1433;' 'Database=db345;' 'Authentication=ActiveDirectoryInteractive;')
注意事项
- 需确保本地安装的ODBC Driver 17 for SQL Server为最新版本,旧版本可能不支持上述Azure AD身份验证参数
- 如需使用SQL账号密码认证,保留原来的UID、PWD参数及
Trusted_Connection=No配置即可正常使用
内容的提问来源于stack exchange,提问作者Kenny_I
相关产品推荐
相关产品推荐

