无法通过Polybase/复制方法将本地数据加载到Synapse的问题排查
私有端点环境下ADF Polybase加载Synapse权限问题解决方案
问题背景
ADF、ADLS Gen2、Synapse均部署于私有端点环境,使用ADF复制活动的批量插入方法可正常将本地数据抽取加载至Synapse,但切换为Polybase/复制方法时,数据能成功复制到ADLS暂存区,却无法加载至Synapse目标表,触发权限相关报错。已确认ADF服务主体拥有ADLS的Blob数据贡献者角色,且配置了针对Synapse和ADLS的专用集成运行时(SHIR)。
需补充配置的权限及检查项
一、Synapse SQL池权限配置
- 给ADF服务主体授予Synapse的
Synapse SQL管理员或目标数据库的SQL用户权限,并在目标数据库执行以下SQL授权语句:-- 授予创建外部数据源权限 GRANT CREATE EXTERNAL DATA SOURCE TO [ADF服务主体名称]; -- 授予创建外部文件格式权限 GRANT CREATE EXTERNAL FILE FORMAT TO [ADF服务主体名称]; -- 授予目标表插入权限 GRANT INSERT ON [目标表名] TO [ADF服务主体名称]; - 若使用Synapse专用SQL池,需确保ADF服务主体拥有
CONTROL DATABASE或ALTER ANY EXTERNAL DATA SOURCE权限——Polybase依赖这些权限创建外部数据源和文件格式。
二、ADLS存储账户额外权限
- 除
Blob数据贡献者外,给ADF服务主体添加存储账户参与者角色(或至少配置Microsoft.Storage/storageAccounts/blobServices/containers/read和Microsoft.Storage/storageAccounts/blobServices/containers/write细粒度权限),Polybase加载时需要读取存储容器元数据。 - 检查ADLS的私有端点网络规则,确保Synapse SQL池可通过私有端点访问ADLS,可通过VNet对等连接或Synapse网络规则添加ADLS私有端点的允许访问配置。
三、专用集成运行时(SHIR)验证
- 确认SHIR部署在与ADLS、Synapse同VNet的子网中,且子网NSG允许SHIR与Synapse(1433端口)、ADLS(443端口)的通信。
- 检查SHIR的凭据配置,确保ADF服务主体已正确注册,且拥有访问Synapse和ADLS的权限。
四、Polybase专属配置检查
- Synapse创建外部数据源时,优先使用
托管身份认证方式,此时需给Synapse的托管身份授予ADLS的Blob数据读取者角色——Polybase加载数据时是Synapse主动访问ADLS暂存区,而非ADF代理。 - 验证ADLS暂存区文件路径的准确性,Polybase对路径大小写、格式敏感,需确保外部数据源指向的路径与ADF写入的路径完全一致。
内容的提问来源于stack exchange,提问作者Prashanth Balakrishnan
相关产品推荐
相关产品推荐

