按计划启动和停止 Azure-SSIS Integration Runtime

适用范围:Azure 数据工厂 Azure Synapse Analytics

提示

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

本文介绍如何使用 Azure 数据工厂和 Azure Synapse Analytics 计划 Azure-SQL Server Integration Services (SSIS) Integration Runtime (IR) 的启动和停止。 Azure-SSIS IR 是专用于运行 SSIS 包的计算资源。

成本与运行 Azure-SSIS IR 相关联。 你通常希望,只有需要在 Azure 中运行 SSIS 包时才运行 IR,在不需要该包时停止 IR。 可使用数据工厂、Azure Synapse Analytics 管道的Azure 门户页或 Azure PowerShell 来手动启动或停止 IR

或者,可在数据工厂或 Azure Synapse Analytics 管道中创建 Web 活动,按计划启动和停止 IR。 例如,可在早上启动它,然后再运行每日 ETL 工作负载,并于下午在工作负载完成后停止它。

还可在两个启动和停止 IR 的 Web 活动之间链接“执行 SSIS 包”活动。 然后,IR 将在包执行之前或之后按需启动和停止。 有关“执行 SSIS 包”活动的详细信息,请参阅在 Azure 门户中使用“执行 SSIS 包”活动运行 SSIS 包

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

若要实现本演练,你需要:

创建和安排用于启动和停止 Azure-SSIS IR 的数据工厂管道

注意

本部分不支持启用了数据外泄保护的 Azure Synapse Analytics 中的 Azure-SSIS。

本部分演示如何在数据工厂管道中使用 Web 活动按计划或按需启动和停止 Azure-SSIS IR。 你将创建三个管道:

  • 第一个管道包含启动 Azure-SSIS IR 的 Web 活动。
  • 第二个管道包含停止 Azure-SSIS IR 的 Web 活动。
  • 第三个管道包含一个在两个启动和停止 Azure-SSIS IR 的 Web 活动之间链接的“执行 SSIS 包”活动。

创建并测试这些管道后,可以创建一个触发器,用于定义管道的运行计划。 例如,你可以创建两个触发器。 第一个触发器计划在每天早上 6 点运行,并与第一个管道相关联。 第二个触发器计划在每天下午 6 点运行,并与第二个管道相关联。 通过这种方式,IR 会在每天早上 6 点到晚上 6 点这一时段运行,可用于运行每日 ETL 工作负载。

如果创建第三个触发器,该触发器计划为每天午夜运行并与第三个管道关联,那么该管道将在每天午夜运行。 它将恰好在包执行前启动 IR,然后运行包。 它会在包执行后立即停止 IR,因此 IR 不会无目的地空闲运行。

创建管道

  1. 在 Azure 数据工厂主页上,选择“协调”。

    Screenshot that shows the Orchestrate button on the Azure Data Factory home page.

  2. 在“活动”工具箱中,展开“常规”菜单,并将一个 Web 活动拖动到管道设计器图面。 在活动属性窗口的“常规”选项卡上,将活动名称更改为“startMyIR”。 切换到“设置”选项卡,然后执行以下操作。

    注意

    对于 Azure Synapse Analytics 中的 Azure-SSIS,请使用相应的 Azure Synapse Analytics REST API 获取集成运行时状态启动集成运行时停止集成运行时

    1. 对于“URL”,请输入下面用于启动 Azure-SSIS IR 的 REST API 的 URL。 将 {subscriptionId}{resourceGroupName}{factoryName}{integrationRuntimeName} 替换为 IR 的实际值。

      https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/start?api-version=2018-06-01

      或者,也可以从数据工厂 UI 或应用上的监视页面复制粘贴 IR 的资源 ID,替换上述 URL 的以下部分:/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}

      Screenshot that shows selections for finding the Azure Data Factory SSIS IR resource ID.

    2. 对于“方法”,请选择“POST”。

    3. 对于“正文”,请输入 {"message":"Start my IR"}

    4. 对于“身份验证”,请选择“托管标识”,对数据工厂使用指定的系统托管标识。 有关详细信息,请参阅 Azure 数据工厂的托管标识

    5. 对于“资源”,请输入 https://management.chinacloudapi.cn/

      Screenshot that shows settings for an Azure Data Factory SSIS IR web activity schedule.

  3. 克隆第一个管道来另外创建一个管道。 将活动名称更改为 stopMyIR,并替换以下属性:

    1. 对于“URL”,请输入下面用于停止 Azure-SSIS IR 的 REST API 的 URL。 将 {subscriptionId}{resourceGroupName}{factoryName}{integrationRuntimeName} 替换为 IR 的实际值。

      https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/stop?api-version=2018-06-01

    2. 对于“正文”,请输入 {"message":"Stop my IR"}

  4. 创建第三个管道。 将“执行 SSIS 包”活动从“活动”工具箱拖到管道设计器图面上。 然后,按照在 Azure 门户中使用“执行 SSIS 包”活动运行 SSIS 包中的说明配置活动。

    在启动和停止 IR 的两个 Web 活动之间链接“执行 SSIS 包”活动,它们类似于第一个和第二个管道中的 Web 活动。

    Screenshot that shows chaining a package between web activities on a pipeline designer.

    还可以通过模板自动创建第三个管道,而不用手动创建:

    1. 选择“管道”旁边的省略号 (...) 打开管道操作的下拉菜单。 然后,选择“模板中的管道”操作。
    2. 选中“类别”下的“SSIS”复选框。
    3. 选择“计划 ADF 管道以在运行 SSIS 包之前和之后及时启动和停止 Azure-SSIS IR”模板。
    4. 在“Azure-SSIS Integration Runtime”下拉菜单中,选择你的 IR。
    5. 选择“使用此模板”按钮。

    自动创建管道后,只留下 SSIS 包,供你分配到“执行 SSIS 包”活动。

    Screenshot that shows selections for creating a pipeline from a template.

  5. 若要使第三个管道更可靠,可以确保在网络连接或其他问题导致任何暂时性错误时重试启动和停止 IR 的 Web 活动。 还可确保仅在 IR 实际启动或停止时完成这些 Web 活动。

    为此,可以将每个 Web 活动替换为 Until 活动。 Until 活动包含两个 Web 活动:一个用于启动和停止 IR,另一个用于检查 IR 状态。 让我们调用 Until 活动“启动 SSIS IR”和“停止 SSIS IR” 。 “启动 SSIS IR”Until 活动包含“尝试启动 SSIS IR”和“获取 SSIS IR 状态”Web 活动。 “停止 SSIS IR”Until 活动包含“尝试停止 SSIS IR”和“获取 SSIS IR 状态”Web 活动。

    在“启动 SSIS IR”Until 活动的“设置”选项卡上,在“表达式”处输入 @equals('Started', activity('Get SSIS IR Status').output.properties.state)。 在“停止 SSIS IR”Until 活动的“设置”选项卡上,在“表达式”处输入 @equals('Stopped', activity('Get SSIS IR Status').output.properties.state)

    Screenshot that shows web activities to start and stop an SSIS IR.

    在这两个 Until 活动中,“尝试启动 SSIS IR”和“尝试停止 SSIS IR”Web 活动类似于第一个和第二个管道中的 Web 活动。 在“获取 SSIS IR 状态”Web 活动的“设置”选项卡上,执行以下操作:

    1. 对于“URL”,请输入下面用于获取 Azure-SSIS IR 状态的 REST API 的 URL。 将 {subscriptionId}{resourceGroupName}{factoryName}{integrationRuntimeName} 替换为 IR 的实际值。

      https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}?api-version=2018-06-01

    2. 对于“方法”,请选择“GET” 。

    3. 对于“身份验证”,请选择“托管标识”,对数据工厂使用指定的系统托管标识。 有关详细信息,请参阅 Azure 数据工厂的托管标识

    4. 对于“资源”,请输入 https://management.chinacloudapi.cn/

      Screenshot that shows settings for Get SSIS IR Status web activities.

  6. 向数据工厂的托管标识分配一个“参与者”角色,使其管道中的 Web 活动可调用 REST API 来启动和停止在其中预配的 Azure-SSIS IR:

    1. 在Azure 门户的数据工厂页上,选择“访问控制(IAM)”。

    2. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

    3. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

      设置
      角色 参与者
      将访问权限分配到 用户、组或服务主体
      成员 数据工厂用户名

      Screenshot that shows the page for adding a role assignment in the Azure portal.

  7. 通过在工厂或管道工具栏上选择“全部验证”或“验证”来验证数据工厂和所有管道设置。 选择双箭头 (>>) 按钮关闭“工厂验证输出”或“管道验证输出”。

    Screenshot that shows the button for validating a pipeline.

测试运行管道

  1. 在每个管道的工具栏上选择“测试运行”。 在底部窗格中,“输出”选项卡列出了管道运行。

    Screenshot that shows the button for running a test and the list of pipeline runs.

  2. 若要测试第三个管道,而你又将 SSIS 包存储在 SSIS 目录 (SSISDB) 中,可使用 SQL Server Management Studio。 在“连接到服务器”窗口中执行以下操作:

    1. 对于“服务器名称”,请输入 <服务器名称>.database.chinacloudapi.cn 。
    2. 选择“选项>>”。
    3. 对于“连接到数据库”,请选择“SSISDB”。
    4. 选择“连接” 。
    5. 展开“Integration Services 目录”>“SSISDB”> 你的文件夹 >“项目”> 你的 SSIS 项目 >“包”。
    6. 右键单击要运行的指定 SSIS 包,然后选择“报告”>“标准报告”>“所有执行”。
    7. 验证包是否已运行。

    Screenshot that shows verification of an SSIS package run.

计划管道

现在,管道按预期工作,可以创建触发器以按指定节奏运行管道。

  1. 在管道工具栏上,依次选择“触发器”和“新建/编辑”。

    Screenshot that shows the menu option for creating or editing a trigger.

  2. 在“添加触发器”窗格上,选择“+ 新建”。

    Screenshot that shows the pane for adding a trigger.

  3. 在“新建触发器”窗格上执行以下操作:

    1. 对于“名称”,输入触发器的名称 。 在以下示例中,触发器名称是 trigger2。
    2. 对于“类型”,请选择“计划”。
    3. 对于“开始日期”,请按 UTC 的格式输入开始日期和时间。
    4. 对于“重复周期”,请输入触发器的频率 。 在以下示例中,频率为每天一次。
    5. 如果希望触发器具有结束日期,请选择“指定结束日期”,然后选择一个日期和时间。
    6. 选择“创建时启动触发器”,在发布所有数据工厂设置后立即激活触发器。
    7. 选择“确定”

    Screenshot that shows the pane for creating a new trigger.

  4. 在“触发器运行参数”页中查看任何警告,然后选择“完成”。

  5. 选择工厂工具栏上的“全部发布”,发布所有数据工厂设置。

    Screenshot that shows the button for publishing all Data Factory settings.

在 Azure 门户中监视管道和触发器

  • 若要监视触发器运行和管道运行,请使用数据工厂 UI 或应用左侧的“监视”选项卡。 有关详细步骤,请参阅直观监视Azure 数据工厂

    Screenshot that shows the pane for monitoring pipeline runs.

  • 若要查看与管道运行关联的活动运行,请在“操作”列中选择第一个链接(“查看活动运行”)。 对于第三个管道,会显示三个活动运行:管道中每个已链接的活动具有一个活动运行(用于启动 IR 的 Web 活动、用于执行包的“执行 SSIS 包”活动,以及用于停止 IR 的 Web 活动)。 若要再次查看管道运行,请选择顶部的“管道”链接。

    Screenshot that shows activity runs.

  • 若要查看触发器运行,请从顶部“管道运行”下的下拉列表中选择“触发器运行”。

    Screenshot that shows trigger runs.

使用 PowerShell 监视管道和触发器

使用如下例所示的脚本来监视管道和触发器:

  • 获取管道运行的状态:

    Get-AzDataFactoryV2PipelineRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $myPipelineRun
    
  • 获取触发器的相关信息:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name  "myTrigger"
    
  • 获取触发器运行的状态:

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "myTrigger" -TriggerRunStartedAfter "2018-07-15" -TriggerRunStartedBefore "2018-07-16"
    

创建并安排用于启动和停止 Azure-SSIS IR 的 Azure 自动化 Runbook

本部分介绍如何创建 Azure 自动化 Runbook,该 Runbook 运行 PowerShell 脚本来按计划启动和停止 Azure-SSIS IR。 如果要在启动和停止 IR 之前或之后运行其他脚本来进行预处理和后处理,此信息非常有用。

创建 Azure 自动化帐户

如果你没有 Azure 自动化帐户,请按照此部分中的说明创建一个。 有关详细步骤,请参阅创建 Azure 自动化帐户

在此过程中,创建一个 Azure 运行方式帐户(Microsoft Entra ID 中的服务主体),并在 Azure 订阅中为其分配参与者角色。 确保它与包含带有 Azure-SSIS IR 的数据工厂的订阅相同。 Azure 自动化将使用此帐户在 Azure 资源管理器中进行身份验证,并对资源执行操作。

  1. 打开 Microsoft Edge 或 Google Chrome Web 浏览器。 目前,只有这些浏览器支持数据工厂 UI。

  2. 登录 Azure 门户

  3. 在左侧菜单中选择“新建”,搜索“自动化”,然后选择。

    Screenshot that shows selections for opening Azure Automation in Azure Marketplace.

  4. 在“添加自动化帐户”窗格上,执行以下操作:

    1. 对于“名称”,请输入 Azure 自动化帐户的名称
    2. 对于“订阅”,请选择具有 Azure-SSIS IR 的数据工厂的订阅。
    3. 对于“资源组”,请选择“新建”来创建新的资源组,或者选择“使用现有项”来使用现有的资源组。
    4. 对于“位置”,选择 Azure 自动化的位置
    5. 对于“创建 Azure 运行方式帐户”,请选择“是”。 将在 Microsoft Entra 实例中创建一个服务主体,并在 Azure 订阅中为其分配参与者角色。
    6. 选择“固定到仪表板”,在 Azure 仪表板上永久显示帐户。
    7. 选择创建

    Screenshot that shows selections for adding an Azure Automation account.

  5. 在 Azure 仪表板和通知中监视 Azure 自动化帐户的部署状态。

    Screenshot of an indicator that shows Azure Automation deployment in progress.

  6. 确认显示 Azure 自动化帐户的主页。 这意味着已成功创建帐户。

    Screenshot that shows the Azure Automation home page.

导入数据工厂模块

在左侧菜单中的“共享资源”部分,选择“模块”。 验证模块列表中是否包含 Az.DataFactory 和 Az.Profile。 这两者都是必需项。

Screenshot that shows a list of modules in Azure Automation.

如果没有 Az.DataFactory:

  1. 转到 PowerShell 库中的 Az.DataFactory 模块,然后导入。

  2. 返回到左侧菜单中的“共享资源”部分来查看“模块”。 等待 Az.DataFactory 模块的状态更改为“可用”。

    Screenshot that shows verification that the Data Factory module appears in the module list.

如果没有 Az.Profile:

  1. 转到 PowerShell 库中的 Az.Profile 模块,然后导入。

  2. 返回到左侧菜单中的“共享资源”部分来查看“模块”。 等待 Az.Profile 模块的状态更改为“可用”。

    Screenshot that shows verification that the profile module appears in the module list.

创建 PowerShell Runbook

此部分提供创建 PowerShell Runbook 的步骤。 与 Runbook 关联的脚本会根据针对 OPERATION 参数指定的命令来启动或停止 Azure SSIS IR。

以下步骤不提供有关创建 Runbook 的完整细节。 有关详细信息,请参阅创建 Runbook

  1. 切换到“Runbook”选项卡,在工具栏中选择“+ 添加 Runbook”。

    Screenshot that shows the button for adding a runbook.

  2. 选择“创建新的 Runbook”,然后执行以下操作:

    1. 对于“名称”,输入 StartStopAzureSsisRuntime
    2. 对于“Runbook 类型”,请选择“PowerShell”。
    3. 选择创建

    Screenshot that shows details for creating a runbook.

  3. 将以下 PowerShell 脚本复制并粘贴到 Runbook 脚本窗口。 使用工具栏上的“保存”和“发布”按钮来保存然后发布你的 Runbook。

    注意

    本例使用系统分配的托管标识。 如果使用运行方式帐户(服务主体)或用户分配的托管标识,请参阅 Azure 自动化示例脚本的登录部分。

    为此自动化帐户的托管标识启用适当的基于角色的访问控制 (RBAC) 权限。 有关详细信息,请参阅 Azure 数据工厂的角色和权限

    Param
    (
          [Parameter (Mandatory= $true)]
          [String] $ResourceGroupName,
    
          [Parameter (Mandatory= $true)]
          [String] $DataFactoryName,
    
          [Parameter (Mandatory= $true)]
          [String] $AzureSSISName,
    
          [Parameter (Mandatory= $true)]
          [String] $Operation
    )
    
    $ErrorActionPreference = "Stop"
    
    try
    {
        "Logging in to Azure..."
        Connect-AzAccount -Identity -Environment AzureChinaCloud
    }
    catch {
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
    
    if($Operation -eq "START" -or $operation -eq "start")
    {
        "##### Starting #####"
        Start-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $AzureSSISName -Force
    }
    elseif($Operation -eq "STOP" -or $operation -eq "stop")
    {
        "##### Stopping #####"
        Stop-AzDataFactoryV2IntegrationRuntime -DataFactoryName $DataFactoryName -Name $AzureSSISName -ResourceGroupName $ResourceGroupName -Force
    }  
    "##### Completed #####"    
    

    Screenshot of the interface for editing a PowerShell runbook.

  4. 在工具栏上选择“启动”按钮来测试 Runbook。

    Screenshot that shows the button for starting a runbook.

  5. 在“启动 Runbook”窗格上,执行以下操作:

    1. 对于“资源组名称”,请输入包含带有 Azure SSIS IR 的数据工厂的资源组的名称。
    2. 对于“数据工厂名称”,输入带有 Azure-SSIS IR 的数据工厂的名称。
    3. 对于“Azure SSIS 名称”,请输入 Azure-SSIS IR 的名称。
    4. 对于“操作”,请输入“启动”。
    5. 选择“确定”

    Screenshot of the pane for parameters in starting a runbook.

  6. 在“作业”窗格中,选择“输出”磁贴。 在“输出”窗格中,等到依次出现消息“##### 正在启动 #####”和“##### 已完成 #####”。 启动 Azure SSIS IR 大约需要 20 分钟。 关闭“作业”窗格并返回到“Runbook”页面。

    Screenshot that shows the output pane.

  7. 使用“停止”作为“操作”的值来重复上述两个步骤。 选择工具栏上的“开始”按钮,再次启动 Runbook。 输入资源组、数据工厂和 Azure-SSIS IR 名称。 对于“操作”,请输入“停止”。 在“输出”窗格中,等到依次出现消息“##### 正在停止 #####”和“##### 已完成 #####”。 停止 Azure SSIS IR 需要的时间比启动它的时间短。 关闭“作业”窗格并返回到“Runbook”页面。

  8. 还可以通过 Webhook 触发 Runbook。 若要创建 Webhook,请选择“Webhook”菜单项。 或者,可选择“计划”菜单项来按计划创建 Webhook,如下一部分所述。

为 Runbook 创建计划来启动和停止 Azure-SSIS IR

在上一部分,你创建了一个可启动或停止 Azure-SSIS IR 的 Azure 自动化 Runbook。 在本部分,会为 Runbook 创建两个计划。 配置第一个计划时,为“操作”指定“启动”。 配置第二个计划时,为“操作”指定“停止”。 有关创建计划的详细步骤,请参阅创建计划

  1. 在“Runbook”页面中选择“计划”,然后在工具栏上选择“+ 添加计划”。

    Screenshot that shows the button for adding a schedule.

  2. 在“计划 Runbook”窗格上,执行以下操作:

    1. 选择“将计划链接到 Runbook”。
    2. 选择“创建新计划”。
    3. 在“新计划”窗格上,为“名称”输入“每天启动 IR”。
    4. 对于“开始”,请输入比当前时间晚几分钟的时间。
    5. 对于“重复周期 ”,请选择“定期”。
    6. 对于“重复间隔”,请输入“1”并选择“日”
    7. 选择创建

    Screenshot that shows selections for scheduling the start of an Azure-SSIS IR.

  3. 切换到“参数和运行设置”选项卡。指定资源组、数据工厂和 Azure-SSIS IR 名称。 对于“操作”,请输入“启动”,然后选择“确定”。 再次选择“确定”,在 Runbook 的“计划”页上查看该计划。

    Screenshot that highlights the value for the operation parameter in scheduling the start of a runbook.

  4. 重复上述两个步骤,创建名为“每日停止 IR”的计划。 输入一个比“每日启动 IR”计划中指定的时间至少晚 30 分钟的时间。 对于“操作”,请输入“停止”,然后选择“确定”。 再次选择“确定”,在 Runbook 的“计划”页上查看该计划。

  5. 在“Runbook”页面上的左侧菜单中选择“作业”。 打开的页面列出了计划在指定时间创建的作业及其状态。 可以查看作业详细信息,例如其输出(与在测试 Runbook 后显示的内容类似)。

    Screenshot that shows the schedule for starting an Azure-SSIS IR.

  6. 完成测试时,可通过编辑计划将其禁用。 在左侧菜单中选择“计划”,选择“每日启动 IR”/“每日停止 IR”,然后对于“已启用”,选择“否”。

请参阅以下博客文章:

参阅 SSIS 文档中的以下文章: