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

如何使用pyodbc通过Windows身份验证/Azure AD MFA连接SQL Server

问题排查与解决方法

核心问题原因

你当前的连接串配置与Azure SQL的身份验证逻辑不匹配:你连接的是Azure SQL服务(域名后缀为database.windows.net),但连接串未明确指定Azure AD认证类型,导致ODBC驱动默认尝试使用Windows集成身份验证,和你实际的登录场景不符,最终触发认证失败报错。

对应场景解决方案

场景1:使用Azure AD密码验证(无需MFA交互,直接传入AD账号密码)

在连接串中添加Authentication=ActiveDirectoryPassword参数,UID填写完整的AD账号(如my.name@domain.com),示例代码如下:

import pyodbc 

conndev = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
              'Server=server124.database.windows.net,1433;'
              'Database=db345;'
              'UID=my.name@domain.com;'
              'PWD=你的账号密码;'
              'Authentication=ActiveDirectoryPassword;')

场景2:使用Azure AD通用MFA交互验证(和SSMS的MFA登录逻辑一致,弹出登录框完成验证)

将Authentication参数设为ActiveDirectoryInteractive,仅需填写UID,无需传入PWD参数,运行时会自动弹出微软登录窗口供你完成MFA校验,示例代码如下:

import pyodbc 

conndev = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
              'Server=server124.database.windows.net,1433;'
              'Database=db345;'
              'UID=my.name@domain.com;'
              'Authentication=ActiveDirectoryInteractive;')

场景3:使用Windows集成身份验证(仅适用于当前Windows账号已加入关联Azure AD的域、且已登录域账号的场景)

将Trusted_Connection设为Yes,无需传入UID、PWD和Authentication参数,示例代码如下:

import pyodbc 

conndev = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
              'Server=server124.database.windows.net,1433;'
              'Database=db345;'
              'Trusted_Connection=Yes;')

注意事项

  • 请确保本地安装的ODBC Driver 17 for SQL Server为最新版本,旧版本对Azure AD认证的支持存在已知缺陷
  • 使用MFA交互验证时,运行代码的环境需要具备图形界面,否则无法弹出登录窗口会触发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:27:01