Azure SQL Server:Azure Data Factory链接服务认证失败问题求助
解决Azure Data Factory链接Azure SQL Server的AAD认证问题
我完全理解你的困扰——本地工具能用带MFA的AAD交互式认证轻松连上SQL Server,但ADF里偏偏找不到这个选项,试了其他认证方式又全失败。其实这是因为ADF的链接服务不支持需要手动介入的交互式MFA验证(比如弹窗、手机验证码那种),得换用非交互式的AAD身份方案,下面给你一步步拆解解决步骤:
核心原因先理清
Azure Data Factory的链接服务设计上就排除了需要用户实时操作的认证流程,所以你看到的可选类型都是无需人工干预的。我们要做的就是给ADF的专属身份(托管身份或服务主体)在SQL Server里配置好权限,实现无交互的认证连接。
方案1:用系统分配托管身份(最推荐,配置最省心)
这是ADF自带的身份,不用额外维护凭证,步骤如下:
- 启用ADF的系统分配托管身份
打开你的Azure Data Factory资源,进入左侧菜单的托管身份,确认系统分配标签下的状态是已启用(如果没启用,点保存就能开启),记下这里的ADF资源名称(后续SQL授权要用)。 - 给托管身份在SQL Server里授权
用你能正常连接的工具(比如SSMS,以AAD Admin身份登录),执行以下SQL命令:-- 创建对应ADF托管身份的数据库用户 CREATE USER [你的ADF资源名称] FROM EXTERNAL PROVIDER; -- 授予必要权限,这里以db_owner为例,可根据实际需求调整 ALTER ROLE db_owner ADD MEMBER [你的ADF资源名称]; - 配置ADF链接服务
在ADF链接服务里选System Assigned Managed Identity认证类型,填好SQL Server名称和数据库名,测试连接应该就能成功了。
方案2:用服务主体(适合多环境或精细权限控制场景)
如果系统分配托管身份不符合你的需求,可以用服务主体:
- 创建Azure AD应用注册(服务主体)
在Azure Portal的Azure Active Directory->应用注册->新注册,创建一个新应用,记下客户端ID、租户ID,然后在证书和密码里创建一个客户端密码(一定要保存好,后续要用到)。 - 给服务主体在SQL Server里授权
同样用AAD Admin身份登录SQL Server,执行:CREATE USER [你的服务主体名称] FROM EXTERNAL PROVIDER; ALTER ROLE db_owner ADD MEMBER [你的服务主体名称]; - 配置ADF链接服务
选Service Principal认证类型,填入之前记录的客户端ID、租户ID,选择密钥并填入创建的客户端密码,测试连接即可。
额外必查项
- 防火墙设置:确保Azure SQL Server的防火墙允许ADF访问。最简单的方式是在SQL Server的
防火墙和虚拟网络设置中,勾选允许Azure服务和资源访问此服务器。 - AAD管理员验证:确认你的Azure SQL Server已经正确设置了AAD管理员(你能通过AAD身份登录本地工具,这一步应该没问题,但可以在SQL Server的
Active Directory管理员里再核对一遍)。
关于Server Admin密码的补充
虽然你提到不知道Server Admin的密码,但其实可以在Azure Portal的SQL Server资源设置 -> 服务器管理员里重置密码。不过既然你已经有AAD Admin权限,用上面的AAD身份认证方案会更安全合规。
内容的提问来源于stack exchange,提问作者Dmitriy Ryabin
相关产品推荐
相关产品推荐

