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

Windows环境下JupyterLab如何以Active Directory用户身份连接SQL Server

实现Windows域凭据连接SQL Server(JupyterLab环境)

完全可以通过当前Windows登录的Active Directory域凭据实现免密连接SQL Server,和SSMS的免密登录逻辑一致,核心是启用Windows集成身份验证(Active Directory Integrated认证),具体实现方法如下:

正确配置连接字符串

之前的连接字符串未指定认证方式,导致驱动默认尝试无凭据登录,因此报错用户名空。需要在连接字符串中明确指定集成认证方式,有两种等效写法:

写法1:使用现代AD认证参数(推荐,适配Azure SQL/本地AD域)

DRIVER={ODBC Driver 18 for SQL Server};SERVER=<server>.database.windows.net;PORT=1433;DATABASE=<database>;Authentication=ActiveDirectoryIntegrated;Encrypt=yes

写法2:使用传统信任连接参数

DRIVER={ODBC Driver 18 for SQL Server};SERVER=<server>.database.windows.net;PORT=1433;DATABASE=<database>;Trusted_Connection=yes;Encrypt=yes

注:Encrypt=yes是ODBC Driver 18的默认配置,连接Azure SQL时必须启用,本地SQL Server可根据实际加密要求调整。

完整代码示例

import pyodbc

# 替换为你的服务器和数据库名称
conn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    "SERVER=<server>.database.windows.net;"
    "PORT=1433;"
    "DATABASE=<database>;"
    "Authentication=ActiveDirectoryIntegrated;"
    "Encrypt=yes;"
)

try:
    # 建立连接
    conn = pyodbc.connect(conn_str)
    print("数据库连接成功")
    
    # 执行测试查询,验证登录用户
    cursor = conn.cursor()
    cursor.execute("SELECT SUSER_SNAME();")
    print(f"当前登录域用户:{cursor.fetchone()[0]}")
    
    # 关闭连接
    conn.close()
except pyodbc.Error as e:
    print(f"连接失败:{e}")

关键注意事项

  • 确保JupyterLab以当前域用户身份启动:如果通过Anaconda Prompt/CMD启动JupyterLab,默认就是当前登录用户的上下文;如果以Windows服务方式运行JupyterLab,需将服务登录账号改为目标域用户。
  • 不要在连接字符串中添加UID或PWD参数,否则会覆盖集成认证的凭据。
  • 确认目标SQL Server/Azure SQL已配置AD身份验证权限:当前域用户需被授予数据库访问权限(可通过SSMS或Azure Portal配置)。
  • 驱动架构匹配:ODBC Driver 18的架构(x64/x86)需与Python运行环境的架构一致,否则会出现驱动找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:12:32