如何在存储帐户的订阅之间复制文件共享数据 - 描述中给出的场景
使用上述问题给出的相同解决方案,我尝试在启用公共访问的不同订阅中跨存储帐户实现 Blob 容器。
当从该解决方案进入链接服务步骤时,我无法执行此步骤
@{linkedService().filesharename}
,因为这里是 Blob 存储服务。
任何人都可以帮我解决这个问题吗?
场景:
在同一个 Azure 租户中,我们在 2 个订阅中有 2 个存储帐户。在第一个订阅 - Blob 容器存储帐户中,我们在不同的 Blob 容器中拥有数据,例如:
我们需要将数据移动到第二个订阅 - Blob 容器存储帐户,该帐户具有如下 Blob 容器:
在简单上下文中,我们必须将数据从 Fileshare1uat 移动到 fileshare1stg,并同样移动到下一个 Blob 容器。
对于文件共享,文件共享名称应在链接服务本身中指定,因此这就是我们需要在该场景中使用链接服务参数的原因。
在这种情况下,当您想要在容器之间复制数据时,可以在数据集级别本身指定 Blob 容器。因此,无需使用链接服务参数。要指定容器,您只需使用数据集参数。
首先,您需要为不同订阅中的存储帐户创建两个 Blob 存储链接服务。这里不需要使用任何参数,如下创建链接服务。
同样,为目标 Blob 存储帐户创建另一个帐户。
现在,使用源容器名称和目标容器名称创建一个数组,并将其提供给管道数组参数。
[
{
"source_container":"sourcecontainer1",
"target_container":"target1"
},
{
"source_container":"sourcecontainer2",
"target_container":"target2"
}
]
为源和目标创建二进制数据集,创建时将这些数据集的文件路径保留为空。创建完成后,创建一个字符串类型的数据集参数
container_name
,并将其用于数据集中文件路径的容器名称中。
对目标二进制数据集执行相同的操作。
获取 For-Each 并将容器列表提供给它。在这里,在 for 循环内,我们需要两个复制活动。一个用于容器的文件夹,另一个用于容器根级别中的文件。
sourcecontainer
folder1
folder2 // One copy activity to copy these folders
file1.csv
file2.csv // Another copy activity to copy these files to the target container
在第一个复制活动中提供源和接收器数据集配置,如下所示。
来源:
水槽:
在第二个复制活动中,进行如下配置。
来源:
水槽:
现在,调试管道,它将给出所需的结果。