使用 Azure Functions 來管理 Azure Synapse Analytics 中專用 SQL 集區的計算資源(先前稱為 SQL DW)

本教學課程使用 Azure Functions 來管理 Azure Synapse Analytics 中專用 SQL 集區(先前稱為 SQL DW)的計算資源。

若要搭配專用 SQL 集區使用 Azure 函式應用程式(先前稱為 SQL DW),您必須建立 服務主體帳戶 。 服務主體帳戶需要與專用 SQL 集區(先前稱為 SQL DW) 實例相同的訂用帳戶下的參與者存取權。

使用 Azure Resource Manager 範本部署計時器型調整

若要部署範本,您需要下列資訊:

  • 專用 SQL 集區 (先前稱為 SQL DW) 實例的資源群組名稱位於
  • 專用 SQL 集區 (先前稱為 SQL DW) 實例的伺服器名稱
  • 專用 SQL 集區的名稱(先前稱為 SQL DW) 實例
  • Microsoft Entra ID 的租使用者識別碼(目錄識別碼)
  • 訂用帳戶識別碼
  • 服務主體應用程式識別碼
  • 服務主體秘密金鑰

取得上述資訊之後,請部署此範本:

Image showing a button labeled

部署範本之後,您應該會找到三個新資源:免費Azure App 服務方案、取用型函式應用程式方案,以及處理記錄和作業佇列的儲存體帳戶。 繼續閱讀其他章節,以瞭解如何修改已部署的函式以符合您的需求。

變更調整作業的時間

  1. 流覽至您的函式 App Service。 如果您使用預設值部署範本,此服務應該命名為 DWOperations 。 函式應用程式開啟後,您應該注意到有五個函式已部署至您的函式 App Service。

    Functions that are deployed with template

  2. 選取 DWScaleDownTrigger DWScaleUpTrigger 以相應增加或相應減少。 在下拉式功能表中,選取 [整合]。

    Select Integrate for function

  3. 目前顯示的值應該會指出 %ScaleDownTime% %ScaleUpTime%。 這些值表示排程是以應用程式 設定 中定義的值為基礎。 目前,您可以忽略此值,並根據後續步驟,將排程變更為慣用的時間。

  4. 在排程區域中,新增您想要反映您想要相應增加 Azure Synapse Analytics 的頻率的 CRON 運算式。

    Change function schedule

    的值是包含下列六個 欄位的 schedule CRON 運算式

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    例如, 「0 30 9 * 1-5」 會反映每個工作日上午 9:30 的觸發程式。 如需詳細資訊,請流覽 Azure Functions 排程範例

變更計算層級

  1. 流覽至您的函式 App Service。 如果您使用預設值部署範本,此服務應該命名為 DWOperations 。 函式應用程式開啟後,您應該注意到有五個函式已部署至您的函式 App Service。

  2. 選取 DWScaleDownTrigger 或 DWScaleUpTrigger 以相應增加或相應減少計算值。 選取函式時,您的窗格應該會顯示 index.js 檔案。

    Change function trigger compute level

  3. 將 ServiceLevelObjective 的值 變更為您想要的層級,然後選取 [儲存]。 ServiceLevelObjective 是資料倉儲實例會根據 [整合] 區段中定義的排程進行調整的計算層級。

使用暫停或繼續,而不是調整

目前,開啟的函式預設為 DWScaleDownTrigger DWScaleUpTrigger 。 如果您想要改用暫停和繼續功能,您可以啟用 DWPauseTrigger DWResumeTrigger

  1. 流覽至 [函式] 窗格。

    Functions pane

  2. 針對您想要啟用的對應觸發程式,選取滑動切換開關。

  3. 流覽至 個別觸發程式的 [整合 ] 索引標籤,以變更其排程。

    注意

    調整觸發程式和暫停/繼續觸發程式之間的功能差異是傳送至佇列的訊息。 如需詳細資訊,請參閱 新增觸發程式函式

新增觸發程式函式

目前範本中只包含兩個縮放函式。 透過這些函式,在一天中,您只能相應減少一次和增加一次。 如需更細微的控制,例如每天相應減少多次,或在週末有不同的調整行為,您需要新增另一個觸發程式。

  1. 建立新的空白函式。 選取函 + 式位置附近的按鈕以顯示函式範本窗格。

    Screenshot that shows the

  2. 從 [語言] 選取 [JavaScript ],然後選取 [ TimerTrigger ]。

    Create new function

  3. 為您的函式命名,並設定您的排程。 下圖顯示,人們如何在週六午夜(週五晚間)觸發其功能。

    Scale down Saturday

  4. 從其他其中一個觸發程式函式複製 index.js 的內容

    Copy index js

  5. 將作業變數設定為所需的行為,如下所示:

    // Resume the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "ResumeDw"
    }
    
    // Pause the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "PauseDw"
    }
    
    // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c
    var operation = {
        "operationType": "ScaleDw",
        "ServiceLevelObjective": "DW600c"
    }
    

複雜的排程

本節簡短示範取得更複雜暫停、繼續和調整功能排程所需的專案。

範例 1

每天上午 8 點相應增加至 DW600c,下午 8 點相應減少至 DW200c。

函式 排程 作業
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

範例 2

每天上午 8 點相應增加至 DW1000c,在下午 4 點相應減少一次至 DW600,並相應減少為下午 10 點至 DW200c。

函式 排程 作業
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

範例 3

在上午 8 點相應增加至 DW1000c,在工作日下午 4 點相應減少一次至 DW600c。 暫停星期五下午11點,星期一早上7點恢復。

函式 排程 作業
Function1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Function4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

下一步

深入瞭解 計時器觸發 程式 Azure Functions。

請參閱專用 SQL 集區(先前稱為 SQL DW) 範例存放庫