Compartir a través de

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

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

本文介绍如何使用 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 数据工厂主页上,选择“协调”。

    显示 Azure 数据工厂主页的“协调”按钮的屏幕截图。

  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}

      该屏幕截图显示了用于查找 Azure 数据工厂 SSIS IR 资源 ID 的选项。

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

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

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

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

      该屏幕截图显示了 Azure 数据工厂 SSIS IR Web 活动计划的设置。

  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 活动。

    该屏幕截图显示了在管道设计器上的 Web 活动之间链接包。

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

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

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

    屏幕截图显示了用于根据模板创建管道的选项。

  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)

    该屏幕截图显示了用于启动和停止 SSIS IR 的 Web 活动。

    在这两个 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/

      该屏幕截图显示了“获取 SSIS IR 状态”Web 活动的设置。

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

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

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

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

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

      显示在 Azure 门户中添加角色分配的页面的屏幕截图。

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

    该屏幕截图显示了用于验证管道的按钮。

测试运行管道

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

    该屏幕截图显示了用于运行测试的按钮和管道运行列表。

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

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

    该屏幕截图显示了 SSIS 包运行的验证。

计划管道

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

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

    该屏幕截图显示了用于创建或编辑触发器的菜单选项。

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

    该屏幕截图显示了用于添加触发器的窗格。

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

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

    该屏幕截图显示了用于创建新触发器的窗格。

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

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

    该屏幕截图显示了用于发布所有数据工厂设置的按钮。

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

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

    该屏幕截图显示了用于监视管道运行的窗格。

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

    显示活动运行的屏幕截图。

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

    显示触发器运行的屏幕截图。

使用 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. 在左侧菜单中选择“新建”,搜索“自动化”,然后选择。

    该屏幕截图显示了 Azure 市场中用于打开 Azure 自动化的选项。

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

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

    该屏幕截图显示了用于添加 Azure 自动化帐户的选项。

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

    该屏幕截图显示了一个表示正在进行 Azure 自动化部署的指示器。

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

    该屏幕截图显示了 Azure 自动化主页。

导入数据工厂模块

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

该屏幕截图显示了 Azure 自动化中的模块列表。

如果没有 Az.DataFactory:

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

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

    该屏幕截图显示了验证数据工厂模块出现在模块列表中。

如果没有 Az.Profile:

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

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

    该屏幕截图显示了验证配置文件模块出现在模块列表中。

创建 PowerShell Runbook

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

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

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

    该屏幕截图显示了用于添加 Runbook 的按钮。

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

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

    该屏幕截图显示了有关创建 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 #####"    
    

    该屏幕截图显示了用于编辑 PowerShell Runbook 的界面。

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

    该屏幕截图显示了用于启动 Runbook 的按钮。

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

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

    启动 Runbook 时的参数窗格的屏幕截图。

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

    显示“输出”窗格的屏幕截图。

  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”页面中选择“计划”,然后在工具栏上选择“+ 添加计划”。

    该屏幕截图显示了用于添加计划的按钮。

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

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

    该屏幕截图显示了用于计划 Azure-SSIS IR 开始时间的选项。

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

    该屏幕截图突出显示了计划 Runbook 启动时操作参数的值。

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

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

    该屏幕截图显示了启动 Azure-SSIS IR 的计划。

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

请参阅以下博客文章:

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