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

Python脚本连接Azure SQL Database失败,认证参数报错求助

问题排查与解决方案

核心问题分析

报错Invalid value specified for connection string attribute 'Authentication'的主要原因是ODBC Driver 17 for SQL Server的版本不支持ActiveDirectoryAccessToken参数,同时数据库名称包含特殊字符也可能加剧解析错误。


具体修复步骤

1. 升级ODBC Driver版本

ODBC Driver 17 for SQL Server需升级至17.6及以上版本才支持ActiveDirectoryAccessToken认证方式,更推荐直接使用最新的ODBC Driver 18:

# 修改driver参数
driver = '{ODBC Driver 18 for SQL Server}'

注:Driver 18默认强制加密连接,若服务器配置特殊,可在连接字符串中添加Encrypt=Optional;(生产环境不建议)。

2. 转义包含特殊字符的数据库名称

你的数据库名称legacy (conosur/legacy)包含空格和括号,需用双引号包裹避免解析错误:

# 修改连接字符串中的DATABASE字段
f'DATABASE="{database}";'

3. 验证连接字符串格式

确保每个键值对末尾带分号,无多余空格。可在pyodbc.connect前打印连接字符串确认格式:

print(connection_string)

4. 确认令牌有效性

虽然已完成浏览器认证,仍可通过jwt.io解码令牌,检查受众(audience)是否为https://database.windows.net/,且包含SQL相关权限。


修正后的完整脚本

import pyodbc
import pandas as pd
from azure.identity import InteractiveBrowserCredential

# Azure SQL Database连接参数
server = 'conosur.database.windows.net'
database = 'legacy (conosur/legacy)'
driver = '{ODBC Driver 18 for SQL Server}'

# 配置Azure AD凭据
credential = InteractiveBrowserCredential()

# 获取Azure AD令牌
token = credential.get_token('https://database.windows.net/.default')

# 构建正确的连接字符串
connection_string = (
    f'DRIVER={driver};'
    f'SERVER={server};'
    f'DATABASE="{database}";'
    f'Authentication=ActiveDirectoryAccessToken;'
    f'ACCESS_TOKEN={token.token};'
    f'Encrypt=Required;'
)

try:
    connection = pyodbc.connect(connection_string)
    print("连接成功建立")
except pyodbc.Error as ex:
    sqlstate = ex.args[0]
    print(f"连接SQL Server出错: {sqlstate}")
    print(f"详细错误: {ex}")
    exit()

# 执行查询
query = 'SELECT * FROM your_table_name'
try:
    df = pd.read_sql(query, connection)
    print("DataFrame创建成功")
except Exception as e:
    print(f"执行查询出错: {e}")
finally:
    connection.close()

# 展示数据
print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:23:18