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

使用pymssql通过Azure AD认证连Azure SQL报错,求排查及替代方案

问题原因及替代方案

问题原因

  1. pymssql对Azure AD认证支持不足:pymssql依赖的DB-Lib库原生不支持Azure Active Directory的现代认证协议,无法正确处理Azure SQL的AD账号认证流程,直接使用AD用户名密码连接会触发登录失败错误。
  2. 可能的主机名配置错误:Azure SQL实例的正确主机名格式应为 <server-name>.database.windows.net,如果MyHostname未按此格式填写,会导致服务器解析失败,进而触发该错误。

可行替代方案

方案1:使用pyodbc库(官方推荐)

pyodbc支持Azure AD全量认证方式,是连接Azure SQL的标准工具。步骤如下:

  1. 安装依赖:确保已安装pyodbc和Azure SQL ODBC驱动(推荐ODBC Driver 18 for SQL Server)
  2. 示例连接代码:
import pyodbc

server = "<你的Azure SQL实例名>.database.windows.net"
database = "DbName"
username = "user@xyz.com"
password = "Password"
driver = "{ODBC Driver 18 for SQL Server}"

# 建立AD密码认证连接
conn = pyodbc.connect(
    f"DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password};Authentication=ActiveDirectoryPassword"
)

方案2:使用Airflow Azure SQL钩子

如果是在Airflow环境中,可直接使用官方提供的AzureSqlHook,简化连接管理:

  1. 确保已安装Airflow Azure provider包:pip install apache-airflow-providers-microsoft-azure
  2. 在Airflow连接界面配置Azure SQL连接:
    • 连接类型:选Azure SQL
    • Host:填写<server-name>.database.windows.net
    • Schema:填写目标数据库名DbName
    • Login:填写AD账号user@xyz.com
    • Password:填写账号密码
    • Extra:添加{"authentication": "ActiveDirectoryPassword"}指定认证方式
  3. 代码中调用钩子:
from airflow.providers.microsoft.azure.hooks.azure_sql import AzureSqlHook

# 通过连接ID获取钩子
hook = AzureSqlHook(azure_sql_conn_id="你的Azure SQL连接ID")
conn = hook.get_conn()

# 执行数据库操作示例
cursor = conn.cursor()
cursor.execute("SELECT * FROM your_table")
results = cursor.fetchall()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:01:54