ADF 将数据复制到 SFTP,但不要尝试先删除文件

问题描述 投票:0回答:1

我有一个复制数据转换,我的源作为 SQL Server 查询,接收器是 SFTP 服务器上的 CSV 文件。

上传失败,因为它试图在上传之前删除文件。我已确定我在 SFTP 上没有删除权限,并且不会被授予这些权限。

我不知道如何告诉这个动作忽略那里的内容并上传。我是否遗漏了什么,或者有什么解决方法吗?谢谢!下面是日志中的片段,如果这有助于说明我的帖子。


TraceComponentId: DataTranferCommon
TraceMessageId: ExecuteSftpCommand
@logId: Information
jobId: d15b0f79-0a45-4901-38b9-e8f5c7ed4183
activityId: b848942b-71bc-494b-8b4e-7b01ddf4c00e
eventId: ExecuteSftpCommand
message: *Start to delete file '/upload/MyFile.txt'.* CommandTimeout=01:00:00



TraceComponentId: TransferClientLibrary
TraceMessageId: ExecuteSftpCommandFailed
@logId: Error
FunctionName: DeleteFile
jobId: d15b0f79-0a45-4901-38b9-e8f5c7ed4183
activityId: b848942b-71bc-494b-8b4e-7b01ddf4c00e
eventId: ExecuteSftpCommandFailed
message: DeleteFile Failed: Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message= Permission denied to access '/upload/MyFile.txt'.,
Source=Microsoft.DataTransfer.ClientLibrary.SftpConnector,StackTrace=   
    at Microsoft.DataTransfer.ClientLibrary.SftpConnector.SftpFileSystem.WrapCommonSftpException(Exception ex, String filePath)
       at Microsoft.DataTransfer.ClientLibrary.SftpConnector.SftpFileSystem.WrapSftpException(String operation, Exception ex, String methodName, 
    String filePath)
    at Microsoft.DataTransfer.ClientLibrary.SftpConnector.SftpFileSystem.DeleteFile(String fullPath, Boolean throwExceptionForNotExistFile)
       at Microsoft.DataTransfer.ClientLibrary.SftpConnector.SftpFileSystem.OpenWriteStream(String absolutePath),
        ''Type=Renci.SshNet.Common.SftpPermissionDeniedException,Message=Permission denied. ,Source=Renci.SshNet,StackTrace=
       at Renci.SshNet.Sftp.SftpSession.RequestRemove(String path)
       at Microsoft.DataTransfer.ClientLibrary.SftpConnector.SftpFileSystem.c__DisplayClass42_0.b__0()
       at System.Threading.Tasks.Task.Execute()
    --- End of stack trace from previous location where exception was thrown ---

来源:

水槽:

水槽细节:

azure-data-factory sftp
1个回答
0
投票

当您使用“复制数据”活动将数据复制到 SFTP 服务器上的同一文件时,“复制”活动将在内部删除现有文件并创建一个同名的新文件。将数据复制到基于文件的接收器(如 FTP、ADLS)时,这是复制活动的默认行为。

因此,需要有删除权限。如果您没有删除 SFTP 服务器上文件的必要权限,则可以为每次上传使用不同的文件名以避免此问题。您可以使用包含时间戳或唯一标识符的动态文件名来确保每个文件具有不同的名称

© www.soinside.com 2019 - 2024. All rights reserved.