Azure Data Factory集成运行时只读权限用户连接本地SQL异常求助
核对ADF链接服务的权限细节
先确认ADF链接服务里用的SQL账号和你SSMS登录的是同一个。另外,只读用户光有SELECT权限不够——ADF连接时需要读取数据库元数据,得确保用户拥有目标库的CONNECT和VIEW DEFINITION权限。可以在SQL Server执行以下语句补全权限:USE [你的目标数据库名]; GRANT VIEW DEFINITION TO [只读用户名]; GRANT CONNECT TO [只读用户名];检查本地IR的运行上下文与网络
本地IR是在特定机器上运行的,要确认该机器的运行账号能访问SQL Server,同时排查机器防火墙、安全软件是否拦截了只读用户的远程连接请求。另外,旧版本IR可能存在权限校验bug,试试把IR更到最新稳定版。查看SQL Server的错误日志与审计记录
去SSMS的「管理 > SQL Server日志」里找该只读用户登录ADF时的具体错误信息,比如18456登录失败的子状态码,这能直接指出问题根源。同时检查SQL Server的登录审计记录,确认ADF的连接请求是否到达服务器,以及被拒绝的具体原因。验证连接字符串与本地连通性
对比开发者和只读用户的ADF链接服务连接字符串,看有没有参数差异(比如ApplicationIntent=ReadOnly是否正确设置)。然后在IR所在机器上用sqlcmd手动测试连接:sqlcmd -S [SQL服务器地址] -U [只读用户名] -P [密码] -d [目标数据库]如果这个命令失败,说明问题在本地IR到SQL Server的连接层面;如果成功,再回头检查ADF的链接服务配置。
确认SQL用户的映射与角色归属
去SSMS的「安全性 > 登录名」右键只读用户,查看「用户映射」,确认目标数据库已勾选,且用户属于db_datareader这类必要的只读角色——有可能用户的角色归属被意外移除了。
内容的提问来源于stack exchange,提问作者George Mathew

