依排程啟動和停止 Azure-SSIS 整合執行時間
適用于: Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版 !
本文說明如何使用 Azure Data Factory 和 Azure Synapse Analytics 來排程 Azure-SQL Server Integration Services (SSIS) 整合執行時間 (IR) 的啟動和停止。 Azure-SSIS IR 是專用於執行 SSIS 套件的計算資源。
成本與執行 Azure-SSIS IR 相關聯。 您通常只想在 Azure 中執行 SSIS 套件時執行 IR,並在不再需要 IR 時停止 IR。 您可以使用 Data Factory、Azure Synapse Analytics 管線的 Azure 入口網站 頁面,或 Azure PowerShell 手動啟動或停止 IR 。
或者,您可以在 Data Factory 或 Azure Synapse Analytics 管線中建立 Web 活動,以依排程啟動和停止 IR。 例如,您可以在早上啟動它,再執行每日 ETL 工作負載,並在工作負載完成後於下午停止。
您也可以在啟動和停止 IR 的兩個 Web 活動之間鏈結「執行 SSIS 套件」活動。 然後,您的 IR 將會在套件執行之前或之後視需要啟動和停止。 如需執行 SSIS 封裝活動的詳細資訊,請參閱 在 Azure 入口網站 中使用 Execute SSIS Package 活動執行 SSIS 套件。
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
必要條件
若要實作此逐步解說,您需要:
Azure Data Factory 的實例。 如果您沒有布建資料集,請遵循快速入門:使用 Azure 入口網站 和 Azure Data Factory Studio 建立資料處理站中的 步驟。
Azure-SSIS IR。 如果您沒有布建一個,請遵循在 Azure Data Factory 中布建 Azure-SSIS 整合執行時間中的 指示。
建立及排程啟動和停止 Azure-SSIS IR 的 Data Factory 管線
注意
Azure Synapse Analytics 中已啟用資料外泄保護 的 Azure-SSIS 不支援本節。
本節說明如何使用 Data Factory 管線中的 Web 活動,依排程啟動和停止 Azure-SSIS IR,或視需要啟動和停止它。 您將建立三個管線:
- 第一個管線包含啟動 Azure-SSIS IR 的 Web 活動。
- 第二個管線包含會停止 Azure-SSIS IR 的 Web 活動。
- 第三個管線包含兩個 Web 活動之間鏈結的「執行 SSIS 套件」活動,以啟動和停止您的 Azure-SSIS IR。
建立及測試這些管線之後,您可以建立觸發程式來定義執行管線的排程。 例如,您可以建立兩個觸發程式。 第一個排程為每天上午 6 點執行,並與第一個管線相關聯。 第二個排程在下午 6 點每天執行,並與第二個管線相關聯。 如此一來,您在 IR 執行時每天上午 6 點到下午 6 點,都準備好執行每日 ETL 工作負載。
如果您建立排定在午夜執行的第三個觸發程式,並與第三個管線相關聯,該管線會每天午夜執行。 它會在套件執行之前啟動 IR,然後執行您的套件。 它會在套件執行之後立即停止 IR,因此 IR 不會以閒置方式執行。
建立管線
在 Azure Data Factory 首頁上,選取 [Orchestrate ]。
在 [活動 ] 工具箱中,展開 [ 一般 ] 功能表,然後將 Web 活動拖曳至管線設計工具介面。 在 [活動屬性] 視窗的 [ 一般 ] 索引標籤上,將活動名稱變更為 startMyIR 。 切換至 [設定] 索引標籤,然後執行下列動作。
注意
針對 Azure Synapse Analytics 中的 Azure-SSIS,請使用對應的 Azure Synapse Analytics REST API 來 取得整合執行時間狀態 、 啟動整合執行時間 ,以及 停止整合執行時間 。
針對 URL ,針對啟動 Azure-SSIS IR 的 REST API 輸入下列 URL。 以 IR 的實際值取代
{subscriptionId}
、{resourceGroupName}
{factoryName}
、 和{integrationRuntimeName}
。https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/start?api-version=2018-06-01
或者,您可以從 Data Factory UI 或應用程式上的 [監視] 頁面複製並貼上 IR 的資源識別碼,以取代上述 URL 的下列部分:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}
。針對 [方法 ],選取 [POST ]。
針對 [ 本文 ],輸入
{"message":"Start my IR"}
。針對 [ 驗證 ],選取 [ 受控識別 ] 以針對資料處理站使用指定的系統受控識別。 如需詳細資訊,請參閱 Azure Data Factory 的受控識別。
針對 [ 資源 ],輸入
https://management.azure.com/
。
複製第一個管線以建立第二個管線。 將活動名稱變更為 stopMyIR ,並取代下列屬性:
針對 [URL ],針對停止 Azure-SSIS IR 的 REST API 輸入下列 URL。 以 IR 的實際值取代
{subscriptionId}
、{resourceGroupName}
{factoryName}
、 和{integrationRuntimeName}
。https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/stop?api-version=2018-06-01
.針對 [ 本文 ],輸入
{"message":"Stop my IR"}
。
建立第三個管線。 將 [執行 SSIS 封裝 ] 活動從 [活動 ] 工具箱拖曳至管線設計工具介面。 然後,依照在 Azure 入口網站 中使用 Execute SSIS Package 活動執行 SSIS 套件中的指示來設定活動。
在啟動和停止 IR 的兩個 Web 活動之間鏈結執行 SSIS 套件活動,類似于第一個和第二個管線中的 Web 活動。
您也可以從範本自動建立它,而不是手動建立第三個管線:
- 選取 [管線 ] 旁 的省略號 ( ... ),以開啟管線動作的下拉式功能表。 然後從範本 動作中選取 [管線]。
- 選取 [ 類別 ] 底下的 [SSIS ] 核取方塊。
- 選取 [ 排程 ADF 管線] 以在執行 SSIS 套件 範本之前和之後,立即啟動和停止 Azure-SSIS IR。
- 在 [ Azure-SSIS Integration Runtime] 下拉式功能表上,選取您的 IR。
- 選取 [ 使用此範本 ] 按鈕。
自動建立管線之後,只有 SSIS 套件可供您指派給「執行 SSIS 封裝」活動。
若要讓第三個管線更健全,您可以確定如果有任何暫時性錯誤(例如,因為網路連線,所以會重試要啟動和停止 IR 的 Web 活動)。 您也可以確保只有當 IR 實際啟動或停止時,才會完成這些 Web 活動。
若要這樣做,您可以將每個 Web 活動取代為 Until 活動。 Until 活動包含兩個 Web 活動:一個用來啟動和停止 IR,另一個用來檢查 IR 狀態。 讓我們呼叫直到活動 啟動 SSIS IR 和 停止 SSIS IR 為止。 開始 SSIS IR 直到活動包含 Try Start SSIS IR 和 Get SSIS IR Status Web 活動。 停止 SSIS IR 直到活動包含 Try Stop SSIS IR 和 Get SSIS IR Status Web 活動。
在 [ 開始 SSIS IR 直到] 活動的 [ 設定] 索引標籤上,針對 [運算式 ] 輸入
@equals('Started', activity('Get SSIS IR Status').output.properties.state)
。 在 [ 停止 SSIS IR 直到] 活動的 [設定] 索引標籤上 ,針對 [運算式 ] 輸入@equals('Stopped', activity('Get SSIS IR Status').output.properties.state)
。在這兩個 Until 活動內, 嘗試啟動 SSIS IR 和 Try Stop SSIS IR Web 活動與第一和第二個管線中的 Web 活動類似。 在 [ 取得 SSIS IR 狀態 ] Web 活動的 [設定] 索引標籤上,執行下列動作:
針對 URL ,針對取得 Azure-SSIS IR 狀態的 REST API 輸入下列 URL。 以 IR 的實際值取代
{subscriptionId}
、{resourceGroupName}
{factoryName}
、 和{integrationRuntimeName}
。https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}?api-version=2018-06-01
針對 [方法 ],選取 [GET ]。
針對 [ 驗證 ],選取 [ 受控識別 ] 以針對資料處理站使用指定的系統受控識別。 如需詳細資訊,請參閱 Azure Data Factory 的受控識別。
針對 [ 資源 ],輸入
https://management.azure.com/
。
將資料處理站的受控識別指派給 自己參與者 角色,因此其管線中的 Web 活動可以呼叫 REST API 來啟動和停止布建的 Azure-SSIS IRS:
在 Azure 入口網站 的 Data Factory 頁面上,選取 [存取控制][IAM]。
選取 [新增 > 角色指派 ] 以開啟 [ 新增角色指派 ] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 參與者 存取權指派對象 使用者、群組或服務主體 成員 您的 Data Factory 使用者名稱
選取 [驗證處理站] 或 [管線] 工具列上的 [全部 驗證] 或 [ 驗證 ],以驗證資料處理站和所有管線設定。 選取雙箭號 () 按鈕,關閉 [處理站驗證輸出 ] 或 [管線驗證輸出 ]。 >>
測試執行管線
針對每個管線,選取 工具列上的 [測試執行 ]。 在底部窗格上,[ 輸出 ] 索引標籤會列出管線的執行。
若要測試第三個管線,如果您在 SSIS 目錄 (SSISDB) 中儲存 SSIS 套件,您可以使用 SQL Server Management Studio。 在 [ 連線至伺服器 ] 視窗中,執行下列動作:
- 針對 [ 伺服器名稱],輸入您的 < 伺服器名稱 > .database.windows.net 。
- 選取選項>>。
- 針對 資料庫連線 ,選取 [SSISDB ]。
- 選取 Connect。
- 展開 [Integration Services 目錄 > ] SSISDB > ,您的資料夾 > [投影 > SSIS 專案 > 套件]。
- 以滑鼠右鍵按一下要執行的指定 SSIS 套件,然後選取 [ 報告 > 標準報表 > 所有執行]。
- 確認套件已執行。
排程管線
既然管線如預期般運作,您可以建立觸發程式,以在指定的步調執行它們。 如需將觸發程式與管線產生關聯的詳細資訊,請參閱 設定管線的 排程。
在管線工具列上,選取 [ 觸發程式 ],然後選取 [ 新增/編輯 ]。
在 [ 新增觸發程式 ] 窗格中,選取 [+ 新增 ]。
在 [ 新增觸發程式] 窗格中,執行下列動作:
- 針對 [ 名稱 ],輸入觸發程式的名稱。 在下列範例中, trigger2 是觸發程式名稱。
- 針對 [ 類型 ],選取 [ 排程 ]。
- 針對 [ 開始日期],以 UTC 輸入開始日期和時間。
- 針對 [ 週期 ],輸入觸發程式的步調。 在下列範例中,它是每天一次。
- 如果您想要讓觸發程式有結束日期,請選取 [指定結束日期 ],然後選取日期和時間。
- 選取 [建立 時啟動觸發程式],以在您發佈所有 Data Factory 設定之後立即啟動觸發程式。
- 選取 [確定]。
在 [ 觸發程式執行參數 ] 頁面上,檢閱任何警告,然後選取 [ 完成 ]。
選取 [全部發佈處理站] 工具列上的 [發佈所有 ],以發佈所有 Data Factory 設定。
監視Azure 入口網站中的管線和觸發程式
若要監視觸發程式執行和管線執行,請使用 Data Factory UI 或應用程式左側的 [監視] 索引標籤。 如需詳細步驟,請參閱 以視覺化方式監視 Azure Data Factory 。
若要檢視與管線執行相關聯的活動執行,請在 [動作 ] 資料行中 選取第一個連結( 檢視活動執行 )。 針對第三個管線,會出現三個活動回合:管線中的每個鏈結活動各一個:一個用於啟動 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 來執行 PowerShell 腳本,以依排程啟動和停止 Azure-SSIS IR。 當您想要在啟動和停止 IR 之前或之後執行其他腳本,以進行前置處理和後續處理時,這項資訊非常有用。
建立您的Azure 自動化帳戶
如果您沒有Azure 自動化帳戶,請遵循本節中的指示建立一個帳戶。 如需詳細步驟,請參閱 建立Azure 自動化帳戶 。
在此程式中,您會建立 Azure 執行身 分帳戶(Microsoft Entra ID 中的服務主體),並在您的 Azure 訂用帳戶中指派 參與者 角色。 請確定其與 Azure-SSIS IR 包含資料處理站的訂用帳戶相同。 Azure 自動化會使用此帳戶向 Azure Resource Manager 進行驗證,並在您的資源上運作。
開啟 Microsoft Edge 或 Google Chrome 網頁瀏覽器。 目前只有這些瀏覽器才支援 Data Factory UI。
登入 Azure 入口網站。
選取 左側功能表上的 [新增 ],選取 [ 監視 + 管理 ],然後選取 [ 自動化 ]。
在 [ 新增自動化帳戶 ] 窗格上,執行下列動作:
- 針對 [ 名稱 ],輸入Azure 自動化帳戶的名稱。
- 針對 [ 訂用帳戶 ],選取具有 Azure-SSIS IR 資料處理站的訂用帳戶。
- 針對 [ 資源群組 ],選取 [新建 ] 以建立新的資源群組,或選取 [ 使用現有的 ] 以使用現有的資源群組。
- 針對 [ 位置 ],選取您Azure 自動化帳戶的位置。
- 針對 [ 建立 Azure 執行身分帳戶 ],選取 [ 是 ]。 服務主體將會在您的 Microsoft Entra 實例中建立,並在您的 Azure 訂用帳戶中指派 參與者 角色。
- 選取 [ 釘選到儀表板 ],在 Azure 儀表板上永久顯示帳戶。
- 選取 建立。
在 Azure 儀表板和通知中監視Azure 自動化帳戶的部署狀態。
確認Azure 自動化帳戶的首頁隨即出現。 這表示您已成功建立帳戶。
匯入 Data Factory 模組
在左側功能表上的 [ 共用資源] 區段中,選取 [模組 ]。 確認您在模組清單中有 Az.DataFactory 和 Az.Profile 。 這兩者都是必要的。
如果您沒有 Az.DataFactory :
選取 [部署至Azure 自動化 ],選取您的Azure 自動化帳戶,然後選取 [ 確定 ]。
回到左側功能表上的 [共用資源 ] 區段中檢視 模組 。 等到 Az.DataFactory 模組的 STATUS 變更為 [可用 ]。
如果您沒有 Az.Profile :
選取 [部署至Azure 自動化 ],選取您的Azure 自動化帳戶,然後選取 [ 確定 ]。
回到左側功能表上的 [共用資源 ] 區段中檢視 模組 。 等到 Az.Profile 模組的狀態 變更為 [可用 ]。
建立 PowerShell Runbook
本節提供建立 PowerShell Runbook 的步驟。 與 Runbook 相關聯的腳本會根據您為 OPERATION 參數指定的命令啟動或停止 Azure-SSIS IR。
下列步驟不提供建立 Runbook 的完整詳細資料。 如需詳細資訊,請參閱 建立 Runbook 。
切換至 [ Runbook] 索引 標籤,然後從工具列選取 [+ 新增 Runbook ]。
選取 [建立新的 Runbook ],然後執行下列動作:
- 針對 [ 名稱 ],輸入 StartStopAzureSsisRuntime 。
- 針對 [ Runbook 類型 ],選取 [PowerShell ]。
- 選取 建立。
將下列 PowerShell 腳本複製並貼到 Runbook 腳本視窗中。 使用工具列上的 [ 儲存 ] 和 [發佈] 按鈕來儲存並 發佈 Runbook。
注意
此範例使用系統指派的受控識別。 如果您使用執行身分帳戶(服務主體)或使用者指派的受控識別,請參閱 登入元件的Azure 自動化範例腳本 。
為此自動化帳戶的受控識別啟用適當的角色型存取控制 (RBAC) 許可權。 如需詳細資訊,請參閱 Azure Data Factory 的角色和許可權。
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 } 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 #####"
選取工具列上的 [ 開始 ] 按鈕,以測試 Runbook。
在 [ 啟動 Runbook ] 窗格上,執行下列動作:
- 針對 RESOURCEGROUPNAME ,輸入具有 Azure-SSIS IR 資料處理站之資源組名。
- 針對 DATAFACTORYNAME ,使用 Azure-SSIS IR 輸入資料處理站的名稱。
- 針對 AZURESSISNAME ,輸入 Azure-SSIS IR 的名稱。
- 針對 [作業 ],輸入 START 。
- 選取 [確定]。
在 [ 作業 ] 窗格中,選取 [ 輸出 ] 圖格。 在 [ 輸出 ] 窗格上,在您看到 ## Starting #之後,等候訊息 ## Completed ## 。 啟動 Azure-SSIS IR 大約需要 20 分鐘。 關閉 [ 作業 ] 窗格,然後返回 [Runbook ] 頁面。
使用 STOP 做為 OPERATION 的值 ,重複上述兩個步驟。 選取 工具列上的 [開始 ] 按鈕,再次啟動 Runbook。 輸入您的資源群組、Data Factory 和 Azure-SSIS IR 名稱。 針對 [作業 ],輸入 STOP 。 在 [ 輸出 ] 窗格中,在您看到 ## 停止 ##之後,等候訊息 ## 已完成 ## 。 只要啟動 Azure-SSIS IR,就不需要。 關閉 [ 作業 ] 窗格,然後返回 [Runbook ] 頁面。
您也可以透過 Webhook 觸發 Runbook。 若要建立 Webhook,請選取 [Webhook] 功能表項目。 或者,您可以選取 [排 程] 功能表項目,如下一節中所指定,依排程建立 Webhook。
建立 Runbook 的排程以啟動和停止 Azure-SSIS IR
在上一節中,您已建立可啟動或停止 Azure-SSIS IR 的 Azure 自動化 Runbook。 在本節中,您會為 Runbook 建立兩個排程。 當您設定第一個排程時,請指定 OPERATION 的 START 。 當您設定第二個時,請指定 STOP for OPERATION 。 如需建立排程的詳細步驟,請參閱 建立排程 。
在 [ Runbook ] 頁面上,選取 [排程 ],然後選取 工具列上的 [+ 新增排程 ]。
在 [ 排程 Runbook ] 窗格上,執行下列動作:
- 選取 [ 將排程連結至 Runbook ]。
- 選取 [ 建立新的排程 ]。
- 在 [ 新增排程] 窗格中,輸入 [ 每日開始 IR] 以取得 [名稱 ]。
- 針對 [ 開始] ,輸入超過目前時間幾分鐘的時間。
- 針對 [ 週期 ],選取 [ 週期性 ]。
- 針對 [ 遞迴每一次 ],輸入 1 ,然後選取 [ 日 ]。
- 選取 建立。
切換至 [ 參數並執行設定 ] 索引標籤。指定您的資源群組、資料處理站和 Azure-SSIS IR 名稱。 針對 [作業 ],輸入 START ,然後選取 [ 確定 ]。 再次選取 [ 確定 ] 以查看 Runbook [ 排程 ] 頁面上的排程。
重複上述兩個步驟,以建立名為「每日停止 IR」 的 排程。 輸入至少在您為 開始 IR 每日 排程指定的時間之後 30 分鐘的時間。 針對 [作業 ],輸入 STOP ,然後選取 [ 確定 ]。 再次選取 [ 確定 ] 以查看 Runbook [ 排程 ] 頁面上的排程。
在 [ Runbook ] 頁面上,選取左側功能表上的 [ 作業 ]。 開啟的頁面會列出排程在指定時間所建立的作業,以及其狀態。 您可以看到作業詳細資料,例如其輸出,類似于測試 Runbook 之後出現的內容。
當您完成測試時,請編輯排程以停用排程。 選取 左側功能表上的 [排程 ],選取 [ 每日啟動 IR/每日停止 IR ],然後針對 [啟用 ] 選取 [ 否 ]。
相關內容
請參閱下列部落格文章:
請參閱 SSIS 檔中的下列文章: