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

如何排查Azure Data Studio添加本地SQL Server连接时出现的‘预登录握手期间发生错误’问题?

解决Mac上Azure Data Studio连接域控SQL Server的预登录握手错误

听起来你卡在了一个典型的跨平台身份验证困境里:Mac本地账户没法直接用Windows身份验证访问域控的SQL Server,用AAD通用MFA又因为SQL本身没配MFA导致握手失败。我来帮你拆解问题并给出可行的解决方案:

先搞清楚为什么会出错

你遇到的 Microsoft.Data.SqlClient.SqlException (0x80131904) 预登录握手错误,核心原因是AAD通用MFA认证是给配置了AAD集成或SQL级MFA的实例用的,但你的SQL Server只认Windows域账户,域本身的MFA和SQL实例没有直接关联——SQL服务器根本不知道要处理MFA流程,所以握手阶段就崩了。

同时你没法选Windows身份验证,是因为Mac当前登录的是本地普通账户,没有和域控建立身份关联,ADS没法自动获取域凭据。

方案1:试试AAD密码认证(快速临时解决)

如果你的域账户还允许密码登录(很多MFA环境会保留这个选项),可以换个认证方式试试:

  • 打开ADS的「添加连接」面板
  • 把认证类型改成「Azure Active Directory - 密码」
  • 输入你的域账户 myUser-server@myComp.org 和对应的域密码
  • 点击连接,大概率能绕过MFA直接完成身份验证

这个方法不用复杂配置,适合临时应急。

方案2:配置Kerberos实现Windows身份验证(长期推荐)

这是Mac访问域控SQL Server的标准解决方案,通过Kerberos让Mac和域控建立信任,从而使用Windows身份验证:

步骤1:获取SQL Server的SPN

先找域管理员要SQL服务器的服务主体名称(SPN),或者让管理员在域服务器上跑这条命令:

setspn -L myDB.servers.myComp.org

你需要拿到类似 MSSQLSvc/myDB.servers.myComp.org:1433 的记录,后面配置会用到。

步骤2:在Mac上配置Kerberos

  1. 打开终端,编辑Kerberos配置文件:
    sudo nano /etc/krb5.conf
    
  2. 粘贴以下内容,把占位符换成你的域信息:
    [libdefaults]
      default_realm = MYCOMP.ORG  # 换成你的域的大写形式,比如MYCOMP.ORG
      dns_lookup_realm = true
      dns_lookup_kdc = true
    
    [realms]
      MYCOMP.ORG = {
        kdc = dc.myComp.org  # 换成你的域控制器地址
        admin_server = dc.myComp.org
      }
    
    [domain_realm]
      .myComp.org = MYCOMP.ORG
      myComp.org = MYCOMP.ORG
    
  3. 按 Ctrl+O 保存,Ctrl+X 退出编辑器。

步骤3:获取域Kerberos票据

在终端里执行这条命令,输入你的域账户密码(如果域要求MFA,可能会弹出验证提示,按要求完成即可):

kinit myUser-server@MYCOMP.ORG

步骤4:用Windows身份验证连接SQL Server

回到ADS的「添加连接」面板:

  • 认证类型选「Windows身份验证」
  • 服务器填 myDB.servers.myComp.org
  • 直接点击连接,ADS会自动用你刚获取的Kerberos票据完成身份验证。

这样配置后,你后续只要在终端重新获取票据,就能用Windows身份验证访问SQL Server了,完全适配域控的权限体系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:52:30