数据工厂复制活动 - AzureFileLeaseConflictError

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

我有一个复制活动,它将一个文件夹中的一堆 xml 文件递归复制到另一个文件夹,并在完成后删除它们。活动失败并出现以下错误。有人在 ADF 的复制活动中遇到过此错误吗?没有该错误的文档!

Error code: AzureFileLeaseConflictError
Failure type: User configuration issue
Details: 
ErrorCode=AzureFileLeaseConflictError,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=AzureFile lease has been acquired or not been released by other jobs. Path:path/to/file.xml,
Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.Azure.Storage.StorageException,Message=The specified resource may be in use by an SMB client.,Source=Microsoft.Azure.Storage.Common,'
azure-data-factory
1个回答
0
投票

ErrorCode=AzureFileLeaseConflictError,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=AzureFile 租约已被其他作业获取或未释放。路径:path/to/file.xml, Source = Microsoft.DataTransfer.ClientLibrary,''Type = Microsoft.Azure.Storage.StorageException,Message = SMB 客户端可能正在使用指定的资源。,Source = Microsoft.Azure.Storage.Common,'

您尝试删除的文件是通过租约获取或由 SMB 客户端使用的,这意味着文件句柄在指定路径上打开,当在文件上获取租约或 SMB 文件句柄打开时,您将无法删除该文件文件,这可能是出现上述错误的原因。文件租赁时如下图:

enter image description here

在 Azure Cloud Shell 中使用以下命令终止租约:

$headers = @{"x-ms-lease-action"= "break"}
$uri = "https://<accountName>.file.core.windows.net/<fileshareName>/<filePath>?comp=lease&<SASToken>"

Invoke-RestMethod -Method Put -Headers $headers -Uri $uri

运行上述命令后,租约将中断文件,如下所示:

enter image description here

使用以下命令使用 Azure Cloud Shell 关闭打开的文件句柄:

$ctx = New-AzStorageContext -StorageAccountName "mystorageacctname" -StorageAccountKey "<account key>"
Close-AzStorageFileHandle -ShareName "mysharename" -Path 'archive' -Recursive -CloseAll -Context $ctx -PassThru

然后您就可以成功复制或删除文件,不会出现任何错误。更多信息可以参考这个

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