集成运行时有两个磁盘驱动器,有没有办法参数化链接服务文件系统中的主机字段?

The integration runtime has two disk drives, is there a way to parameterize the Host field in the linked service file system?

我正在尝试部署一个带有复制数据管道的 azure 数据工厂,该管道从一个或多个已部署/本地文件系统路径中提取文件并将它们转储到 blob 存储中。文件系统上的源文件路径可能跨越多个不同的驱动器(例如 - C:\fileshare1 与 D:\fileshare2)并且可能包括通过 UNC 路径引用的网络位置(例如 - \localnetworkresource\fileshare3)。

我想配置单个本地文件系统连接和源数据集,并只参数化链接服务的主机 属性。然后我的管道将迭代文件共享路径的集合并重用数据集和链接的服务连接。但是,似乎没有任何方法可以让数据集或管道向链接服务提供主机信息。提供来自管道和数据集的文件夹信息当然是可能的,但这些信息将连接到链接服务连接中指定的主机,因此不允许我访问不同的驱动器或网络资源。

通过为需要包含的每个不同文件共享配置单独的链接服务连接、数据集和管道来实现这一点相当简单,但我更愿意管理单个管道。

我已经尝试创建链接服务的JSON但是没有成功,有人可以帮助我吗?

https://docs.microsoft.com/en-us/azure/data-factory/parameterize-linked-services

是的,您可以按如下方式参数化文件系统链接服务。首先你需要创建一个文件系统链接服务,然后你可以修改JSON代码添加参数部分如下:

{
    "name": "OnPremFileSystemLinkedService_Parameterized",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "type": "FileServer",
        "parameters": {
            "HostParameter": {
                "type": "string",
                "defaultValue": "C:\[Folder]"
            },
            "userIDParameter": {
                "type": "string",
                "defaultValue": "DOMAIN\USERNAME"
            }
        },
        "annotations": [],
        "typeProperties": {
            "host": "@{linkedService().HostParameter}",
            "userId": "@{linkedService().userIDParameter}",
            "encryptedCredential": "XXXXXXXXXXXencryptedKeyXXXXXXXXX"
        },
        "connectVia": {
            "referenceName": "MySelfHostedIR",
            "type": "IntegrationRuntimeReference"
        }
    }
}

在我的示例中,我只使用单个文件共享作为输入和一个副本 activity。但根据您的要求,您可以将 FileShare 集合列表传递给 ForEach activity 并遍历每个 FileShare 并将这些值传递给您的 Copy Activity -> Source/Sink 数据集参数 ->链接的服务参数属性。

以下是有关如何使用参数化文件系统链接服务的示例

希望对您有所帮助。

This is how I solved it :)

配置如下: