Azure Data Factory复制Blob时元数据未保留,寻求解决建议
我使用Azure Data Factory的Copy Activity在Blob存储之间执行复制操作,但复制完成后文件的元数据未被保留。尝试过编辑管道JSON定义添加preserve指令,但未成功。目前当Blob同时作为源和接收器时,ADF可视化界面(GUI)不支持直接设置保留属性、标签或元数据,以下是可行的解决思路:

排查与解决步骤
核对preserve指令的JSON配置格式
确保在Copy Activity的sink节点下正确配置preserve数组,明确指定需要保留的元数据类型,示例配置片段如下:"sink": { "type": "AzureBlobStorageSink", "preserve": [ "attributes", "metadata", "tags" ] }同时确认源数据集为Azure Blob Storage类型,且ADF运行时版本为最新版(旧版本可能不支持该特性)。
验证存储账户权限配置
确保ADF使用的服务主体或托管标识,对源Blob存储拥有读取元数据、标签、属性的权限,对目标Blob存储拥有写入元数据、标签、属性的权限(推荐使用Storage Blob Data Contributor角色,或配置更细粒度的权限)。检查文件类型与复制行为
分页Blob、追加Blob的元数据保留存在特殊限制,优先确认源文件为块Blob(最常用的Blob类型);同时检查复制行为设置,确保选择“递归复制所有文件”或正确的文件匹配模式,避免过滤掉需保留元数据的文件。排查集成运行时环境
若使用自托管集成运行时,需确保版本为最新;若使用托管运行时,确认对应区域的运行时已支持元数据保留功能。单文件测试与日志分析
先测试单个小文件的复制操作,查看目标Blob的元数据、属性、标签是否正常保留;同时查看复制活动的运行日志,排查是否存在元数据保留相关的警告或错误信息。
内容的提问来源于stack exchange,提问作者Matthew Campbell

