本教學課程使用 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 的租使用者識別碼(目錄識別碼)
- 訂用帳戶識別碼
- 服務主體應用程式識別碼
- 服務主體秘密金鑰
取得上述資訊之後,請部署此範本:
部署範本之後,您應該會找到三個新資源:免費Azure App 服務方案、取用型函式應用程式方案,以及處理記錄和作業佇列的儲存體帳戶。 繼續閱讀其他章節,以瞭解如何修改已部署的函式以符合您的需求。
變更調整作業的時間
流覽至您的函式 App Service。 如果您使用預設值部署範本,此服務應該命名為 DWOperations 。 函式應用程式開啟後,您應該注意到有五個函式已部署至您的函式 App Service。
選取 DWScaleDownTrigger 或 DWScaleUpTrigger 以相應增加或相應減少。 在下拉式功能表中,選取 [整合]。
目前顯示的值應該會指出 %ScaleDownTime% 或 %ScaleUpTime%。 這些值表示排程是以應用程式 設定 中定義的值為基礎。 目前,您可以忽略此值,並根據後續步驟,將排程變更為慣用的時間。
在排程區域中,新增您想要反映您想要相應增加 Azure Synapse Analytics 的頻率的 CRON 運算式。
的值是包含下列六個 欄位的
schedule
CRON 運算式 :{second} {minute} {hour} {day} {month} {day-of-week}
例如, 「0 30 9 * 1-5」 會反映每個工作日上午 9:30 的觸發程式。 如需詳細資訊,請流覽 Azure Functions 排程範例 。
變更計算層級
流覽至您的函式 App Service。 如果您使用預設值部署範本,此服務應該命名為 DWOperations 。 函式應用程式開啟後,您應該注意到有五個函式已部署至您的函式 App Service。
選取 DWScaleDownTrigger 或 DWScaleUpTrigger 以相應增加或相應減少計算值。 選取函式時,您的窗格應該會顯示 index.js 檔案。
將 ServiceLevelObjective 的值 變更為您想要的層級,然後選取 [儲存]。 ServiceLevelObjective 是資料倉儲實例會根據 [整合] 區段中定義的排程進行調整的計算層級。
使用暫停或繼續,而不是調整
目前,開啟的函式預設為 DWScaleDownTrigger 和 DWScaleUpTrigger 。 如果您想要改用暫停和繼續功能,您可以啟用 DWPauseTrigger 或 DWResumeTrigger 。
流覽至 [函式] 窗格。
針對您想要啟用的對應觸發程式,選取滑動切換開關。
流覽至 個別觸發程式的 [整合 ] 索引標籤,以變更其排程。
注意
調整觸發程式和暫停/繼續觸發程式之間的功能差異是傳送至佇列的訊息。 如需詳細資訊,請參閱 新增觸發程式函式 。
新增觸發程式函式
目前範本中只包含兩個縮放函式。 透過這些函式,在一天中,您只能相應減少一次和增加一次。 如需更細微的控制,例如每天相應減少多次,或在週末有不同的調整行為,您需要新增另一個觸發程式。
建立新的空白函式。 選取函 + 式位置附近的按鈕以顯示函式範本窗格。
從 [語言] 選取 [JavaScript ],然後選取 [ TimerTrigger ]。
為您的函式命名,並設定您的排程。 下圖顯示,人們如何在週六午夜(週五晚間)觸發其功能。
從其他其中一個觸發程式函式複製 index.js 的內容 。
將作業變數設定為所需的行為,如下所示:
// 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) 範例存放庫 。