若要将 Azure 数据工厂(ADF)管道迁移到 Microsoft Fabric,可以使用 基于 PowerShell 的 FabricUpgrader 工具。 该工具可自动执行大部分迁移,但使用名为解析文件的 JSON 文件在 Azure 数据工厂链接服务和 Microsoft Fabric 连接之间进行映射。
本文是一份关于创建分辨率文件以及排查相关问题的指南,内容包括:
- 解析文件的基本结构
- 解析类型
- 如何获取 Fabric 连接的 GUID
- 如何为 ExecutePipeline 活动构建 CredentialConnectionId 条目
- 如何为 Web 和 WebHook 活动构建 UrlHostToConnectionId 条目
- 分辨率失败警报及其使用方法的示例
基本分辨率文件
解析文件的基本结构为:
[
{
"type": "LinkedServiceToConnectionId",
"key": "<ADF LinkedService Name>",
"value": "<Fabric Connection ID>"
}
]
-
type是要执行的映射类型。 这通常是LinkedServiceToConnectionId,但在某些情况下,也可能使用 其他类型的类型。 -
key取决于你正在使用的type。 对于LinkedServiceToConnectionId,key是您想要映射的 ADF 连接服务 的名称。 - 要映射的 Fabric 连接的 GUID 是
value。 可以在 Fabric 连接的设置中找到 GUID。
例如,如果有两个名为 MyAzureBlobStorage 和 MySQLServer 的 ADF 链接的服务,并希望将其映射到 Fabric 连接,那么,你的文件应如下所示:
[
{
"type": "LinkedServiceToConnectionId",
"key": "MyAzureBlobStorage",
"value": "aaaa0000-bb11-2222-33cc-444444dddddd"
},
{
"type": "LinkedServiceToConnectionId",
"key": "MySQLServer",
"value": "bbbb1111-cc22-3333-44dd-555555eeeeee"
}
]
使用此结构创建 Resolutions.json 文件,并将其保存在计算机上的某个位置,以便 PowerShell 可以访问该文件。
分辨率类型
在解析条目中可以使用三 type 个条目,具体取决于管道和连接:
-
LinkedServiceToConnectionId - 最常见的映射,用于将 ADF LinkedService 映射到 Fabric 连接。 按照 获取连接的 GUID 中的步骤创建映射。
-
key此类型值是 Azure 数据工厂链接服务名称。
-
-
CredentialConnectionId - 用于调用其他管道的 ADF ExecutePipeline 活动。 请按照 CredentialConnectionId 条目指南 来创建用于添加这些活动的凭据。
-
key此类型的值为“user”。
-
-
UrlHostToConnectionId - 用于 ADF Web 和 WebHook 活动。 按照 UrlHostToConnectionId 条目指南,先创建正确的连接,然后更新解析项。
-
key此类型的值为连接的主机名。
-
获取连接的 GUID
若要获取 Fabric 连接的 GUID,请添加到 LinkedServiceToConnectionId 条目:
在 Fabric 中打开数据工厂工作区。
选择右上角的齿轮图标,然后选择“ 管理连接和网关”。
如果 Fabric 中尚不存在连接,请创建一个新连接。
小窍门
在故障情况下,请使用警报中的 connectionHint 来选择正确的连接类型和数据源。
如果已建立连接,或者创建连接后,请将鼠标悬停在连接名称旁边的省略号按钮上以显示菜单。
从弹出菜单中选择 “设置 ”。
在设置窗格中,复制 连接 ID。
使用 Azure 数据工厂链接服务名称和复制的连接 ID 更新此解析条目模板:
{ "type": "LinkedServiceToConnectionId", "key": "<ADF LinkedService Name>", "value": "<Fabric Connection ID>" }小窍门
解决失败警报包括可以复制和修改的模板。 请参阅 解析失败警报的示例及其用法 以获取详细信息。
将对象添加到 Resolutions.json。 例如:
[ ..., { "type": "LinkedServiceToConnectionId", "key": "mysqlls", "value": "aaaa0000-bb11-2222-33cc-444444dddddd" } ]
CredentialConnectionId 条目
如果计划升级 ADF ExecutePipeline 活动,请将 CredentialConnectionId 添加到解决方案中。
在 Fabric 工作区中,选择右上角的齿轮图标,然后选择 “管理连接和网关”。
转到“ 连接 ”选项卡,选择屏幕顶部的“ + 新建 ”:
在“ 新建连接 ”窗格中:
- 输入连接的名称。
- 选择 结构管道 作为连接类型。
- 选择 OAuth 2.0 作为身份验证方法。
选择“编辑凭据”
浏览器窗口打开时,选择帐户。
在“ 新建连接 ”窗格中,选择“ 创建”。
在“设置”窗格中,复制连接 ID。
将此对象添加到 Resolutions.json,将值替换为复制的 GUID:
{ "type": "CredentialConnectionId", "key": "user", "value": "<GUID of your Credential Connection>" }例如:
[ ..., { "type": "CredentialConnectionId", "key": "user", "value": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ]
UrlHostToConnectionId 条目
在 Azure 数据工厂中,Web 和 WebHook 活动包括完整的 URL。 Fabric 的工作方式有所不同:Fabric 使用连接和相对网址。 目前,升级程序仅将主机名替换为连接 ID。 例如:连接至 https://contoso.com 加上相对 URL /admin/organize。 我们将条目添加到解析文件,以便在迁移过程中正确映射连接。
选择右上角的齿轮图标,然后选择“ 管理连接和网关”。
转到“ 连接 ”选项卡,然后选择“ + 新建”。
在 “新建连接 ”窗格中:
- 输入连接的名称。
- 选择 Web v2 作为连接类型。
- 填写主机名和授权。
- 选择 创建。
在设置窗格中,复制连接 ID。
将此对象添加到 Resolutions.json,将值替换为复制的 GUID:
{ "type": "UrlHostToConnectionId", "key": "<Hostname from your Web or WebHook activity>", "value": "<GUID of your Credential Connection>" }例如,如果连接为
https://www.example.com:443/:[ ..., { "type": "UrlHostToConnectionId", "key": "https://www.example.com", "value": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ]
示例警报及其用法
运行迁移时,如果迁移出现问题,警报可能会要求你添加解决方法。 该警报还告诉你要创建的连接类型,并提供一个模板,用于添加解决方案。 例如:
{
"state": "Failed",
"alerts": [
{
"severity": "RequiresUserAction",
"details": "Please use the hint and template to create/find a new connection and add its ID to your resolutions.",
"connectionHint": {
"linkedServiceName": "mysqlls",
"connectionType": "AzureSqlDatabase",
"datasource": "my-sql-server.database.windows.net",
"template": {
"type": "LinkedServiceToConnectionId",
"key": "mysqlls",
"value": "<Fabric Connection ID>"
}
}
}
],
"resolutions": [],
"result": {}
}
该警报的用途:
创建或查找 AzureSqlDatabase 类型的 Fabric 连接,该连接指向显示的数据源(例如,my-sql-server.database.windows.net)。
复制该连接的 ID。
在警报中,找到属于您的
templateJSON 条目。 例如:"template": { "type": "LinkedServiceToConnectionId", "key": "mysqlls", "value": "<Fabric Connection ID>" }使用模板将 Resolution 对象添加到 Resolutions.json,替换
<Fabric Connection ID>为实际的 GUID。[ ..., { "type": "LinkedServiceToConnectionId", "key": "mysqlls", "value": "aaaa0000-bb11-2222-33cc-444444dddddd" } ]