将自承载 IR 配置为 Azure-SSIS IR 的代理

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文介绍如何在将某个自承载集成运行时(自承载 IR)配置为代理的情况下,在 Azure-SSIS Integration Runtime (Azure-SSIS IR) 上运行 SQL Server Integration Services (SSIS) 包。

使用此功能可在本地访问数据并运行任务,而无需将 Azure-SSIS IR 加入虚拟网络。 当企业网络的配置过于复杂,或者采用过于严格的策略,以致你很难在此网络中注入 Azure-SSIS IR 时,此功能将很有用。

目前只能在 SSIS 数据流任务和执行 SQL/进程任务上启用此功能。

此功能在数据流任务上启用后,会将它拆分为两个暂存任务(如果适用):

  • 本地暂存任务:此任务运行连接到自承载 IR 上本地数据存储的数据流组件。 它在本地数据存储与 Azure Blob 存储中的暂存区域之间来回移动数据。
  • 云暂存任务:此任务运行无法连接到 Azure-SSIS IR 上本地数据存储的数据流组件。 它在 Azure Blob 存储中的暂存区域与云数据存储之间来回移动数据。

如果数据流任务将数据从本地移动到云,则第一个和第二个暂存任务将分别为本地暂存任务和云暂存任务。 如果数据流任务将数据从云移动到本地,则第一个和第二个暂存任务将分别为云暂存任务和本地暂存任务。 如果数据流任务将数据从本地移动到本地,则第一个和第二个暂存任务将皆为本地暂存任务。 如果数据流任务将数据从云移动到云,则此功能不适用。

此功能在执行 SQL/进程任务上启用后,将在自承载 IR 中运行这些任务。

举例而言,此功能的其他优势和功能使你能够在 Azure-SSIS IR 尚不支持的区域中设置自承载 IR,并在数据源的防火墙中允许自承载 IR 的公共静态 IP 地址。

准备自承载 IR

若要使用此功能,请先创建一个数据工厂,然后在其中设置 Azure-SSIS IR。 如果尚未执行此操作,请按照设置 Azure-SSIS IR 中的说明操作。

然后,在设置了 Azure-SSIS IR 的同一数据工厂中设置自承载 IR。 为此,请参阅创建自承载 IR

最后,按如下所述,在本地计算机或 Azure 虚拟机 (VM) 上下载并安装最新版本的自承载 IR 以及其他驱动程序和运行时:

  • 下载并安装最新版本的自承载 IR

  • 如果自承载 IR 版本为 5.28.0 或更高,请在自承载集成运行时节点上启用 SSIS 包执行。

    ExecuteSsisPackage 属性是从自承载 IR 版本 5.28.0 中新引入的。 使用以下自承载 IR 命令行操作启用或禁用 SSIS 包执行:

    • -EnableExecuteSsisPackage 在自承载 IR 节点上启用 SSIS 包执行。

    • -DisableExecuteSsisPackage 在自承载 IR 节点上禁用 SSIS 包执行。

    • -GetExecuteSsisPackage

    自承载 IR 命令行详细信息请参阅通过本地 PowerShell 设置现有的自承载 IR

    新安装的具有版本 5.28.0 或更高版本的自承载 IR 节点,默认情况下禁用 ExecuteSsisPackage 属性。

    现有自承载 IR 节点已更新到版本 5.28.0 或更高版本,ExecuteSsisPackage 属性默认启用

  • 如果使用包中的对象链接与嵌入数据库 (OLEDB)、开放式数据库连接 (ODBC) 或 ADO.NET 连接器,请在安装了自承载 IR 的同一台计算机上下载并安装相关驱动程序(如果尚未这样做)。

    如果使用早期版本的用于 SQL Server 的 OLEDB 驱动程序 (SQL Server Native Client [SQLNCLI]),请下载 64 位版本

    如果使用最新版本的用于 SQL Server 的 OLEDB 驱动程序 (MSOLEDBSQL),请下载 64 位版本

    如果使用用于其他数据库系统(例如 PostgreSQL、MySQL、Oracle 等)的 OLEDB/ODBC/ADO.NET 驱动程序,可以从其网站下载 64 位版本。

  • 如果在包中使用 Azure 功能包中的数据流组件,请在安装了自承载 IR 的同一台计算机上下载并安装适用于 SQL Server 2017 的 Azure 功能包(如果尚未这样做)。

  • 如果尚未这样做,请在安装了自承载 IR 的同一台计算机上下载并安装 64 位版本的 Visual C++ (VC) 运行时

为本地任务启用 Windows 身份验证

如果自承载 IR 上的本地暂存任务和执行 SQL/进程任务需要 Windows 身份验证,则还必须在 Azure-SSIS IR 上配置 Windows 身份验证功能

将使用自承载 IR 服务帐户(默认为 NT SERVICE\DIAHostService)调用本地暂存任务和执行 SQL/进程任务,并将使用 Windows 身份验证帐户访问数据存储。 需要向这两个帐户分配特定的安全策略。 在自承载 IR 计算机上,转到“本地安全策略”>“本地策略”>“用户权限分配”,然后执行以下操作:

  1. 向自承载 IR 服务帐户分配“调整进程的内存配额”和“替换进程级令牌”策略。 使用默认服务帐户安装自承载 IR 时,系统应会自动进行此分配。 如果系统没有自动分配,请手动分配这些策略。 如果使用其他服务帐户,则为其分配相同的策略。

  2. 向 Windows 身份验证帐户分配“作为服务登录”策略。

为暂存准备 Azure Blob 存储链接服务

如果尚未在设置了 Azure-SSIS IR 的数据工厂中创建 Azure Blob 存储链接服务,请执行此操作。 为此,请参阅创建 Azure 数据工厂链接服务。 确保执行以下操作:

  • 对于“数据存储”,请选择“Azure Blob 存储”。
  • 对于“通过集成运行时连接”,请选择“AutoResolveIntegrationRuntime”(而非自承载 IR),这样我们可以将其忽略并改为使用 Azure-SSIS IR 来提取 Azure Blob 存储的访问凭据 。
  • 对于“身份验证方法”,请选择“帐户密钥”、“SAS URI”、“服务主体”、“托管标识”或“用户分配的托管标识” 。

提示

如果选择“服务主体”方法,请至少为你的服务主体授予“存储 Blob 数据参与者”角色。 有关详细信息,请参阅 Azure Blob 存储 连接器。 如果选择“托管标识”/“用户分配的托管标识”方法,请向为 ADF 指定的系统/用户分配的托管标识授予可访问 Azure Blob 存储的适当角色 。 有关详细信息,请参阅使用为 ADF 指定的系统/用户分配的托管标识通过 Microsoft Entra 身份验证访问 Azure Blob 存储

准备用于暂存的 Azure Blob 存储链接服务

配置使用自承载 IR 作为代理的 Azure-SSIS IR 配置

准备好用于暂存的自承载 IR 和 Azure Blob 存储链接服务后,接下来可以在数据工厂门户或应用中,配置使用自承载 IR 作为代理的新的或现有 Azure-SSIS IR。 不过,在执行此操作之前,如果现有的 Azure-SSIS IR 已运行,你可以停止、编辑,然后重启它。

  1. 在“集成运行时设置”窗格中,通过选择“继续”按钮,跳过“常规设置”和“部署设置”页 。

  2. 在“高级设置”页上执行以下操作:

    1. 选中“将自承载集成运行时设置为 Azure-SSIS Integration Runtime 的代理”复选框。

    2. 在“自承载集成运行时”下拉列表中,选择现有的自承载 IR 作为 Azure-SSIS IR 的代理。

    3. 在“暂存存储链接服务”下拉列表中,选择现有的 Azure Blob 存储链接服务,或创建新的服务用于暂存。

    4. 在“暂存路径”框中,指定所选 Azure 存储帐户中的某个 Blob 容器,或将其留空以使用默认容器进行暂存。

    5. 选择“继续”按钮。

    使用自承载 IR 的高级设置

还可以使用 PowerShell 来配置使用自承载 IR 作为代理的新的或现有 Azure-SSIS IR。

$ResourceGroupName = "[your Azure resource group name]"
$DataFactoryName = "[your data factory name]"
$AzureSSISName = "[your Azure-SSIS IR name]"
# Self-hosted integration runtime info - This can be configured as a proxy for on-premises data access 
$DataProxyIntegrationRuntimeName = "" # OPTIONAL to configure a proxy for on-premises data access 
$DataProxyStagingLinkedServiceName = "" # OPTIONAL to configure a proxy for on-premises data access 
$DataProxyStagingPath = "" # OPTIONAL to configure a proxy for on-premises data access 

# Add self-hosted integration runtime parameters if you configure a proxy for on-premises data access
if(![string]::IsNullOrEmpty($DataProxyIntegrationRuntimeName) -and ![string]::IsNullOrEmpty($DataProxyStagingLinkedServiceName))
{
    Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
        -DataFactoryName $DataFactoryName `
        -Name $AzureSSISName `
        -DataProxyIntegrationRuntimeName $DataProxyIntegrationRuntimeName `
        -DataProxyStagingLinkedServiceName $DataProxyStagingLinkedServiceName

    if(![string]::IsNullOrEmpty($DataProxyStagingPath))
    {
        Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
            -DataFactoryName $DataFactoryName `
            -Name $AzureSSISName `
            -DataProxyStagingPath $DataProxyStagingPath
    }
}
Start-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
    -DataFactoryName $DataFactoryName `
    -Name $AzureSSISName `
    -Force

启用 SSIS 包以使用代理

使用最新 SSDT 作为 Visual Studio 的 SSIS 项目扩展或独立安装程序,可以发现支持的数据流组件的连接管理器中新的 ConnectByProxy 属性和执行 SQL/进程任务中的 ExecuteOnProxy 属性。

使用可在本地访问数据的组件设计包含数据流任务的新包时,可以通过在相关连接管理器的“属性”窗格中,将 ConnectByProxy 属性设置为 True 来启用此属性。

在设计包含本地运行的执行 SQL/进程任务的新包时,可以通过在相关任务本身的“属性”窗格中将 ExecuteOnProxy 属性设置为 True 来启用该属性。

启用 ConnectByProxy/ExecuteOnProxy 属性

还可以在运行现有包时启用 ConnectByProxy/ExecuteOnProxy 属性,而无需逐个手动更改它们。 有两个选项:

  • 选项 A:打开、重新生成并重新部署包含这些包的项目。这些包中包含要在 Azure-SSIS IR 上运行的最新 SSDT。 从 SSMS 运行包时,对于“执行包”弹出窗口的“连接管理器”选项卡上显示的相关连接管理器,还可以通过将 ConnectByProxy 属性设置为 True 来启用此属性 。

    启用 ConnectByProxy/ExecuteOnProxy property2

    在数据工厂管道中运行包时,对于执行 SSIS 包活动的“连接管理器”选项卡上显示的相关连接管理器,还可以通过将 ConnectByProxy 属性设置为 True 来启用此属性。

    启用 ConnectByProxy/ExecuteOnProxy property3

  • 选择 B:重新部署包含这些包的项目,以在 SSIS IR 上运行。 然后,可以在从 SSMS 运行包时,通过在“执行包”弹出窗口的“高级”选项卡上提供 ConnectByProxy/ExecuteOnProxy 属性的属性路径 \Package.Connections[YourConnectionManagerName].Properties[ConnectByProxy]/\Package\YourExecuteSQLTaskName.Properties[ExecuteOnProxy]/\Package\YourExecuteProcessTaskName.Properties[ExecuteOnProxy],并将它们设置为 True 作为属性重写,来启用这些属性 。

    启用 ConnectByProxy/ExecuteOnProxy property4

    在数据工厂管道中运行包时,还可以通过在执行 SSIS 包活动的“属性重写”选项卡上提供 ConnectByProxy/ExecuteOnProxy 属性的属性路径 \Package.Connections[YourConnectionManagerName].Properties[ConnectByProxy]/\Package\YourExecuteSQLTaskName.Properties[ExecuteOnProxy]/\Package\YourExecuteProcessTaskName.Properties[ExecuteOnProxy],并将它们设置为 True 作为属性重写,来启用这些属性。

    启用 ConnectByProxy/ExecuteOnProxy property5

调试本地任务和云暂存任务

在自承载 IR 上,可以在 C:\ProgramData\SSISTelemetry 文件夹中找到运行时日志,并在 C:\ProgramData\SSISTelemetry\ExecutionLog 文件夹中找到本地暂存任务和执行 SQL/进程任务的执行日志 。 可以在 SSISDB、指定的日志路径或 Azure Monitor 中找到云暂存任务的执行日志,具体取决于是否将包存储在 SSISDB 中、是否启用 Azure Monitor 监视等。还可以在云暂存任务的执行日志中找到本地暂存任务的唯一 ID。

第一个暂存任务的唯一 ID

如果你已开具客户支持票证,可以在安装于自承载 IR 上的 Microsoft Integration Runtime Configuration Manager 的“诊断”选项卡上选择“发送日志”按钮,将最新操作/执行日志发送给我们以便调查。

本地暂存任务和云暂存任务的计费

在自承载 IR 上运行的本地暂存任务和执行 SQL/进程任务将单独计费,就像自承载 IR 上运行的任何数据移动活动的计费方式一样。 这是在 Azure 数据工厂数据管道定价一文中指定的。

Azure-SSIS IR 上运行的云暂存任务不单独计费,但是运行中的 Azure-SSIS IR 会计费,如 Azure-SSIS IR 定价一文中所述。

执行 TLS 1.2

如果需要访问已配置为仅使用最强加密/最安全网络协议 (TLS 1.2) 的数据存储,包括用于暂存的 Azure Blob 存储,则必须在自承载 IR 上同时只启用 TLS 1.2 并禁用较旧的 SSL/TLS 版本。 为此,可以从 https://github.com/Azure/Azure-DataFactory/tree/main/SamplesV2/SQLServerIntegrationServices/publicpreview/CustomSetupScript/UserScenarios/TLS%201.2 下载并运行 main.cmd 脚本。

当前限制

  • 目前仅支持在 Azure-SSIS IR 标准版中内置/预安装的数据流组件(Hadoop/HDFS/DQS 组件除外),请参阅 Azure-SSIS IR 上的所有内置/预安装组件
  • 当前仅支持用托管代码 (.NET Framework) 编写的自定义/第三方数据流组件,而不支持用本机代码 (C++) 编写的组件。
  • 当前不支持在本地和云暂存任务中同时更改变量值。
  • 在本地暂存任务中更改 object 类型的变量值不会反映在其他任务中。
  • 目前不支持 OLEDB 源中的 ParameterMapping。 作为变通方法,请使用“变量中的 SQL 命令”作为“访问模式”,并使用“表达式”在 SQL 命令中插入变量/参数。 有关说明,请参阅 ParameterMappingSample.dtsx 包,它位于公共预览版 Blob 容器的 SelfHostedIRProxy/Limitations 文件夹中 。 使用 Azure 存储资源管理器,可以通过输入以上 SAS URI 连接到公共预览版 Blob 容器。

将自承载 IR 配置为 Azure-SSIS IR 的代理后,可以部署和运行包,以便在数据工厂管道中以“执行 SSIS 包”活动的形式访问数据或在本地运行任何 SQL 语句/进程。 有关操作方法,请参阅在数据工厂管道中以“执行 SSIS 包”活动的形式运行 SSIS 包