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

使用mssql包通过Microsoft Entra ID - 支持MFA的通用认证连接Azure Synapse时遇到问题求助

mssql包通过Microsoft Entra ID - 支持MFA的通用认证连接Azure Synapse时遇到问题求助

你好,从你的描述来看,核心问题是在无浏览器的服务器环境下,没法用交互式MFA来连接Azure Synapse,需要改用非交互式的Microsoft Entra ID(旧称Azure AD)认证方式,我来帮你梳理清楚问题和解决步骤:

先理清你之前尝试的问题出在哪

  1. Client ID的误解:你从Entra ID拿的用户主体名完全不对——Client ID应该是Entra应用注册的ID,不是用户账号的ID,这是你之前报错的核心原因之一。
  2. 认证方式选错了:Active Directory Integrated是给已加入域的Windows机器用的集成认证,不适合无浏览器的服务器环境,这种方式会尝试用当前机器的Windows账号去认证,自然会出现“Login failed for user ''”的空用户错误。

正确的解决方案:用服务主体认证(无浏览器环境首选)

因为你的服务器没法做交互式MFA,最稳定的方式是创建一个Entra应用注册(也就是服务主体),用这个“虚拟账号”来连接Synapse,步骤如下:

1. 在Entra ID中创建应用注册

  • 登录Entra ID控制台,进入「应用注册」→「新注册」
  • 随便填个名称,选择「仅此组织目录中的帐户」(按你的权限范围选就行),重定向URI可以留空(因为是非交互式认证)
  • 注册完成后,立刻记下应用程序(客户端) ID和目录(租户) ID
  • 进入「证书和密码」→「客户端密码」→「新客户端密码」,设置有效期并保存生成的密码(这个只会显示一次,一定要存好)

2. 给服务主体分配Synapse权限

  • 进入Azure Synapse工作区,在「管理」→「SQL管理员」里,把这个服务主体添加为Synapse管理员(或者按需分配更细的权限)
  • 也可以直接在Synapse数据库里执行SQL,给服务主体分配数据库级权限:
    CREATE USER [你的应用注册名称] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [你的应用注册名称]; -- 按需换成db_datawriter或其他角色
    

3. 配置正确的mssql连接字符串

用Active Directory Service Principal作为认证方式,示例如下:

"Server=xxxxxx.sql.azuresynapse.net;Database=JDMDW;Timeout=30;Max Pool Size=10;Min Pool Size=0;ConnectRetryInterval=2;Authentication=Active Directory Service Principal;Encrypt=true;TrustServerCertificate=false;TenantId=你的租户ID;ClientId=你的应用注册Client ID;ClientSecret=你的应用注册Client Secret"

其他可选方式(仅限非MFA用户)

如果你一定要用个人用户账号认证,只有当你的账号没有启用MFA时,才能用Active Directory Password方式,连接字符串示例:

"Server=xxxxxx.sql.azuresynapse.net;Database=JDMDW;Timeout=30;Max Pool Size=10;Min Pool Size=0;ConnectRetryInterval=2;Authentication=Active Directory Password;Encrypt=true;TrustServerCertificate=false;TenantId=你的租户ID;User Id=你的用户UPN;Password=你的用户密码"

但这种方式不支持MFA,所以还是服务主体的方案更适配你的服务器环境。

几个关键注意点

  • 绝对不要同时设置Integrated Security=true,这会和Entra认证方式冲突
  • TrustServerCertificate建议设为false,Azure Synapse的SSL证书是受信任的,没必要绕过验证
  • 确保你的服务器能访问login.microsoftonline.com,不然Entra认证会直接失败

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:08:33