使用System-assigned managed identity创建Synapse Linked Service失败
问题描述
尝试使用*System-assigned managed identity(系统分配托管标识)*创建指向Azure Synapse Server的链接服务(Linked Service),已完成如下配置:
- 已开启对应服务的系统分配托管标识

- 已将托管标识添加到目标Synapse Server与对应数据库的权限配置列表


配置过程中持续报错,报错信息如下:
排查与修复方案
按以下优先级逐一核对配置错误:
- SQL赋权逻辑错误
绝大多数托管标识连接Synapse失败的原因是赋权步骤不符合语法要求:给托管标识赋权不能仅在门户勾选权限完成,必须执行标准SQL语句,且要严格区分服务器级和数据库级权限:- 先连接到Synapse的
master系统库,执行语句创建服务器级登录:
CREATE LOGIN [托管标识对应资源的完整名称] FROM EXTERNAL PROVIDER;注意:此处名称必须和开启托管标识的资源名完全一致,例如为Data Factory开启的托管标识,就填Data Factory的资源全名,不能加后缀、不能写错字符。
- 再切换到要访问的业务数据库,执行语句创建数据库用户并分配对应权限:
CREATE USER [托管标识对应资源的完整名称] FROM EXTERNAL PROVIDER; -- 按业务需求分配权限,只读场景分配db_datareader,读写场景额外加db_datawriter ALTER ROLE db_datareader ADD MEMBER [托管标识对应资源的完整名称]; ALTER ROLE db_datawriter ADD MEMBER [托管标识对应资源的完整名称]; - 先连接到Synapse的
- Synapse未配置Azure AD管理员
未配置Azure AD管理员的Synapse Server不支持任何AAD身份认证(含托管标识认证),需要先进入Synapse Server的「Azure Active Directory」设置页,指定一个AAD账号作为服务管理员,配置完成后等待10分钟再测试连接。 - 链接服务参数配置错误
核对链接服务的配置项:- 认证方式选择「系统分配托管标识」后,不要手动填写租户ID、托管标识ID、客户端密钥等参数,这类参数会由系统自动读取,手动填写极易出现参数不匹配问题
- 服务器地址填写格式为
<你的Synapse工作区名>.sql.azuresynapse.net,不要加https://前缀,不要额外加端口后缀 - 确认填写的数据库名正确,注意区分无服务器SQL池和专用SQL池的默认库名称,不要填错目标库
- 网络策略拦截
检查Synapse Server的防火墙配置:- 如果创建链接服务的资源(如Data Factory、其他Synapse工作区)使用托管VNet访问,需要开启Synapse Server侧「允许Azure服务和资源访问此服务器」的开关
- 如果使用自托管集成运行时连接,需要将自托管节点的公网IP段添加到Synapse的防火墙白名单中
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

