Azure Data Factory长文件路径读取问题求助
解决ADF通过SHIR读取长路径文件的方案
针对你遇到的ADF复制活动因路径过长无法读取文件的问题,以下是几个无需修改客户文件夹结构的可行方案:
方案1:使用SUBST映射驱动器
在SHIR所在的客户VM上,通过subst命令将长路径的父目录映射为一个驱动器字母,缩短ADF中配置的路径长度:
- 执行命令:
subst Z: "C:\very\long\path\structure\to\customer\root-folder" - 之后ADF链接服务中只需配置
Z:\subfolder\target-file.xlsx即可访问目标文件 - 若需重启VM后保持映射,可将该命令添加到Windows开机启动项(通过任务计划程序或注册表)
方案2:创建NTFS软链接
在VM上为长路径文件夹创建短路径的软链接,让ADF通过短链接访问目标文件:
- 执行命令:
mklink /D C:\ShortLink "C:\very\long\path\structure\to\customer\root-folder" - ADF中使用
C:\ShortLink\subfolder\target-file.xlsx作为文件路径 - 确保SHIR的运行账户同时拥有软链接和目标文件夹的读写权限
方案3:修改SHIR配置文件启用长路径支持
即使组策略已启用长路径,SHIR进程可能未加载相关配置,需手动修改其配置文件:
- 找到SHIR安装目录(默认路径:
C:\Program Files\Microsoft Integration Runtime\5.0\Gateway) - 编辑
Microsoft.DataTransfer.Gateway.Service.exe.config,在<configuration>节点内添加:
<runtime> <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" /> </runtime>
- 重启Microsoft Integration Runtime Gateway Service服务
方案4:通过PowerShell前置活动中转文件
在ADF管道中添加PowerShell自定义活动,先将长路径文件复制到VM本地的短路径临时目录,再让复制活动读取临时文件:
- PowerShell脚本示例(使用
\\?\前缀支持长路径):
# 复制长路径文件到临时目录 Copy-Item -Path "\\?\C:\very\long\path\structure\to\customer\folder\subfolder\file.xlsx" -Destination "C:\ADFTemp\file.xlsx" -Force # 复制完成后可添加清理逻辑(可选) # Remove-Item -Path "C:\ADFTemp\file.xlsx" -Force -ErrorAction SilentlyContinue
- 复制活动的源路径配置为临时目录的短路径,复制完成后可通过后续活动清理临时文件
内容的提问来源于stack exchange,提问作者Matías Daniel Bertuzzi
相关产品推荐
相关产品推荐

