You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF复制数据至SFTP因无删除权限失败,求解决方案

解决Azure Data Factory复制到SFTP时因删除权限失败的问题

核心原因

ADF的Copy Data活动中,SFTP Sink默认采用「Overwrite」(覆盖)写入行为时,会先尝试删除目标目录下的现有文件。若SFTP账号无删除权限,就会触发Permission denied to access '/upload/MyFile.txt'这类权限拒绝错误。

可行解决方案

方案1:启用「临时文件名上传」(推荐)

开启该选项后,ADF会先将文件上传为临时文件(例如MyFile.txt.tmp),上传完成后再重命名为目标文件名。此操作仅需SFTP账号拥有目标目录的写入权限和重命名权限,无需删除权限:

  • 进入Copy Data活动的「Sink」配置页
  • 展开「高级」设置
  • 勾选「使用临时文件名」
  • 可自定义临时文件后缀(默认是.tmp)

方案2:修改写入行为为「追加」(仅适用于允许追加内容的场景)

若业务允许在现有文件末尾追加数据,可调整写入行为:

  • 在SFTP Sink的「写入行为」下拉菜单中选择「追加」
  • 此方式不会删除现有文件,直接在文件末尾写入新数据

方案3:使用自定义活动/Azure Function上传文件

若上述方案不满足需求,可通过Azure Function编写自定义SFTP上传逻辑,绕过ADF默认的删除流程:

  • 使用Renci.SshNet库编写上传代码,调用SftpClient.UploadFile时指定fileMode: FileMode.Create,直接覆盖现有文件无需先删除
  • 在ADF中添加「自定义活动」,配置调用该Azure Function

日志验证

启用临时文件名上传后,日志会显示类似流程,说明已跳过删除步骤:

Start to upload file '/upload/MyFile.txt.tmp'
Start to rename file '/upload/MyFile.txt.tmp' to '/upload/MyFile.txt'

内容的提问来源于stack exchange,提问作者InbetweenWeekends

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:52:40