建立、設定及管理彈性作業

適用於:Azure SQL 資料庫

本文提供建立、設定和管理 Azure SQL 資料庫彈性作業所需的步驟。 您可在 Azure 入口網站,以及透過使用 T-SQL、PowerShell 和 REST API 來完成上述許多步驟。 彈性作業可讓您以平行方式,跨多個資料庫執行一個或多個 Transact-SQL (T-SQL) 指令碼。 如需詳細資訊,請進一步了解 Azure SQL 資料庫中的作業自動化概念,或閱讀更多 Azure SQL 資料庫中的彈性作業相關內容。

建立和設定彈性作業代理程式

  1. 使用 DTU 購買模型,建立或識別空白 S1 或更新版本的 Azure SQL 資料庫。 此資料庫應位於與作業代理程式相同的伺服器中。 此資料庫將在彈性作業代理程式建立期間用做作業資料庫。 您可透過 Azure 入口網站、Azure CLI、Azure CLI (sql up) 或 PowerShell,來建立單一資料庫

  2. 在 Azure 入口網站中或使用 PowerShell,來建立彈性作業代理程式

    在 Azure 入口網站中建立彈性作業代理程式的指示如下:

    1. 在 Azure 入口網站中,搜尋彈性作業代理程式。 選取建立,開始佈建新的彈性作業代理程序資源。 或者,點按此連結,在 Azure 入口網站中建立彈性作業代理程式
    2. 提供彈性作業代理程式名稱
    3. 選擇代理程式的訂用帳戶資源群組。 如有必要,建立新的資源群組。 彈性作業可將其他資源群組、訂用帳戶,甚至其他 Azure 區域的資料庫設為目標。
    4. 選擇 Azure SQL 資料庫邏輯伺服器,做為彈性作業代理程式伺服器。
    5. 選擇邏輯伺服器中的作業資料庫,做為彈性作業代理程式資料庫。 某些驗證可確保資料庫適用。
    6. 服務層級下,選擇 JA 100
    7. 選取下一步:身分識別
    8. 作業代理程式以伺服器/資料庫為目標的驗證方法有兩種︰採用使用者指派的受控識別 (UMI) 的 Microsoft Entra 驗證,或資料庫範圍的認證。
      1. 在彈性作業代理程式佈建程序外部建立 UMI,或使用現有的 UMI。 選取新增使用者指派的受控識別。 選取 UMI。 選取 [新增]。
      2. 若要使用資料庫範圍的認證,請參閱本教學課程稍後的步驟
    9. 選取 [下一步:標記]
    10. 請考慮使用 Azure 標籤。 例如,用來識別誰建立資源的 "Owner" 或 "CreatedBy" 標籤,以及用來識別此資源是否在生產、開發等環境中的環境標籤。如需詳細資訊,請參閱制定 Azure 資源的命名和標記策略
    11. 選取 [檢閱 + 建立]。
    12. 在 [檢閱 + 建立] 頁面上,驗證新的彈性作業代理程式選項,然後選取 [建立]。
    13. 需要進一步步驟,才能對目標伺服器/資料庫進行驗證。 請繼續執行本教學課程文章下列各節中的步驟。

建立作業代理程式驗證

彈性工作代理程式必須能夠對每個目標伺服器或資料庫進行驗證。 在本節中,我們將探討彈性作業代理程式在目標群組中對伺服器/資料庫進行驗證所需的步驟。

彈性作業代理程式對目標進行驗證有兩個選項:

搭配使用者指派的受控識別 (UMI) 使用 Microsoft Entra 驗證

搭配使用者指派的受控識別 (UMI) 使用 Microsoft Entra (先前稱為 Azure Active Directory) 驗證。 這是建議的驗證方法。

  1. 在所有作業目標邏輯伺服器/資料庫以及作業輸出邏輯伺服器上,啟用 Microsoft Entra (先前稱為 Azure Active Directory) 驗證。
  2. 建立使用者指派的受控識別 (UMI),或使用已有的 UMI。
    • 您可透過 Azure 入口網站、Azure CLI、PowerShell、Resource Manager 或 REST API 建立新的 UMI
  3. 將 UMI 指派給已建立的彈性作業代理程式。
    • 建議在建立彈性作業代理程式時指派 UMI,請參閱建立和設定彈性作業代理程式中的步驟。 在 Azure 入口網站中建立作業代理程式時,請在身分識別索引標籤中,指派給彈性作業代理程式。
    • 若要更新現有的彈性作業代理程式以使用 UMI,請在彈性作業代理程式的 Azure 入口網站頁面上,導覽至資源功能表中安全性功能表下的身分識別]。 選取 UMI 並將其指派給彈性作業代理程式。
    • 使用 New-AzSqlElasticJobAgentSet-AzSqlElasticJobAgent PowerShell Cmdlet 建立或更新彈性作業代理程式時,請使用參數:-IdentityType UserAssigned -IdentityID <identity resource path>。 例如:
      $parameters = @{
          Name = '<job agent name>'
          ResourceGroupName = '<Resource_Group_Name>'
          IdentityType = 'UserAssigned'
          IdentityID = '/subscriptions/fa58cf66-caaf-4ba9-875d-f1234/resourceGroups/<resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UMI name here>'
      }
      Set-AzSqlElasticJobAgent @parameters
      
    • REST API 也可以用來建立或更新彈性作業代理程式
  4. 建立目標群組,並新增作業的目標。 使用 PowerShell 定義目標群組 (您想要執行作業的資料庫),或使用 T-SQL 定義目標群組和目標
  5. 在每個目標伺服器/資料庫中,使用 T-SQL 或 PowerShell 建立對應至 UMI 或資料庫範圍認證的自主使用者:
    1. 使用 T-SQL 建立作業驗證
    2. 使用 PowerShell 建立作業驗證
  6. 在輸出資料庫中,建立並指派權限給 UMI 作業使用者。 連線至輸出資料庫,並為名為 jobuserUMI 的使用者執行下列範例指令碼:
    CREATE USER [jobuserUMI] FROM EXTERNAL PROVIDER; 
    GO 
    
  7. 如果在 the @output_table_name argument 中的 sp_add_jobstep 呼叫中指定輸出參數,則必須授與作業代理程式 UMI 或資料庫範圍的認證在輸出資料表中 CREATE TABLE 和 INSERT 資料的權限。
    GRANT CREATE TABLE TO [job_user];
    GRANT SELECT,INSERT,UPDATE,DELETE ON [dbo].[output_table_name] TO job_user;
    
  8. 在每個目標伺服器/資料庫中,授與資料庫使用者執行作業指令碼所需的權限。 這些權限會根據 T-SQL 查詢的需求而有所不同。

使用資料庫範圍認證

您可以在作業資料庫和每個目標伺服器/資料庫中使用資料庫範圍認證來進行驗證。 過去,資料庫範圍認證是彈性作業唯一可用的選項。

注意

如果將 UMI 指派給作業代理程式,則不會使用 SQL 驗證來連線到其目標。 作業代理程式只會使用 Microsoft Entra 驗證搭配 UMI 連線到其所有目標資料庫。

  1. 作業資料庫中建立資料庫範圍認證。
    1. 使用 PowerShell 建立資料庫範圍認證
    2. 使用 T-SQL 建立資料庫範圍認證
  2. 使用 PowerShell 定義目標群組 (您想要執行作業的資料庫),或使用 T-SQL 定義目標
  3. 在每個將執行作業的目標資料庫中建立作業代理程式登入/使用者。 每個目標伺服器/資料庫的登入/使用者都必須與作業使用者的資料庫範圍認證身分識別具有相同的名稱,並與作業使用者的資料庫範圍認證具有相同的密碼。
    1. 使用 PowerShell 將認證和使用者新增至每個目標資料庫
    2. 如需新增使用者的詳細資訊,請參閱使用登入和使用者帳戶授權伺服器和資料庫存取
  4. 在輸出資料庫中,建立並指派權限給作業使用者。
    1. 連線至託管輸出資料庫的之邏輯伺服器的 master 資料庫。 如果尚未存在,請為作業使用者建立與資料庫範圍認證身分識別相同名稱的 SQL 驗證登入,以及與作業使用者資料庫範圍認證相同的密碼。
      CREATE LOGIN [job_user] WITH PASSWORD '<same_password_as_database-scoped_credential>'
      GO 
      
    2. 連線至輸出資料庫,並為名為 job_user 的使用者執行下列範例指令碼:
      CREATE USER [job_user] FROM LOGIN [job_user]; 
      GO 
      
    3. 如果在 @output_table_name 引數的 sp_add_jobstep 呼叫中指定輸出參數,則必須授與作業代理程式 UMI 或資料庫範圍的認證在輸出資料表中 CREATE TABLE 和 INSERT 資料的權限。
      GRANT CREATE TABLE TO [job_user];
      GRANT SELECT,INSERT,UPDATE,DELETE ON [dbo].[output_table_name] TO job_user;
      
  5. 在每個目標伺服器/資料庫中,授與資料庫使用者執行作業指令碼所需的權限。 這些權限會根據 T-SQL 查詢的需求而有所不同。

建立、執行和管理作業

  1. 使用 PowerShell 建立作業,或使用 T-SQL 來建立作業
  2. 將步驟新增至每個彈性作業。 必須為每個作業步驟選擇目標群組。 使用 PowerShell 來新增作業步驟,或使用 T-SQL 來新增作業步驟
  3. 使用 PowerShell 執行作業,或使用 T-SQL 執行作業
  4. 使用 Azure 入口網站監視作業執行狀態,使用 PowerShell 監視作業,或使用 T-SQL 監視作業

設定 Azure SQL 彈性作業私人端點

每個目標伺服器都可以透過由服務管理的私人端點來連線、由 Microsoft 建立及管理,並專供彈性作業使用。 建立彈性作業私人端點,即可建立彈性作業與目標伺服器之間的私人連結。 設定之後,彈性作業代理程式與目標伺服器之間的所有通訊都會透過私人端點進行。

設定很簡單。 您必須為每個所需的目標伺服器和作業輸出伺服器建立私人端點,才能啟用此通訊。

  1. 在 [彈性作業代理程式] 導覽功能表中,選取 [安全性] 底下的 [私人端點]。
  2. 選取 [新增伺服器並建立私人端點]。
  3. [建立私人端點] 視窗隨即開啟。
    1. 您可以從 Azure 中任何一處的訂用帳戶選取目標伺服器。
    2. 選取該訂用帳戶中的目標 Azure SQL 資料庫邏輯伺服器。
    3. 提供私人端點名稱
  4. 選取建立私人端點。 完成此部署需要一些時間。 不久,[私人端點] 頁面上的 [連線狀態]會顯示 [擱置]。
  5. 在 Azure 入口網站中,瀏覽至目標 Azure SQL 資料庫邏輯伺服器。
  6. 作為該目標 Azure SQL 資料庫邏輯伺服器的系統管理員,在 [SQL Server] 導覽功能表中,選取 [安全性] 底下的 [網路]。
  7. 選取 [私人存取]。
  8. 核准擱置的私人端點要求。
  9. [私人端點] 頁面上的 [連線狀態]會顯示 [已核准]。 現在,作業代理程式與目標 Azure SQL 資料庫邏輯伺服器中的任何資料庫或彈性集區之間的任何通訊,都會通過服務受控的私人端點進行。
  10. 作為該目標 Azure SQL 資料庫邏輯伺服器的系統管理員,在 [SQL Server] 導覽功能表中,選取 [安全性] 底下的 [網路]。 針對彈性作業的目的,不需要啟用公用存取

使用 Azure 監視器設定作業代理程式警示

在彈性作業代理程式資源上設定 Azure 監視器警示,以針對作業執行狀態收到通知。 例如,您可以透過使用者設定的動作群組收到作業失敗/成功的通知。

您可以使用 Azure 入口網站、PowerShell 或 REST API 建立彈性作業代理程式警示。

使用 Azure 入口網站建立作業代理程式警示

使用 Azure 入口網站、Azure CLI、PowerShell 和 REST API 來建立 Azure 監視器警示規則。 彈性作業之警示規則的運作方式與其他警示規則類似,例如 Azure SQL 資料庫。

若要使用 Azure 入口網站繼續:

  1. 在彈性作業代理程式的 Azure 入口網站資源功能表上,移至 [監視],然後選取 [警示]。
  2. 在 [設定此資源的警示規則] 提示底下,選取 [建立警示規則]。
  3. 在 [建立警示規則] 頁面上,[選取訊號] 頁面隨即開啟。 選取彈性作業計量 [彈性作業執行失敗]、[彈性作業執行成功] 或 [彈性作業執行逾時]。顯示 [建立警示規則] 頁面之 Azure 入口網站的螢幕擷取畫面。
  4. 在 [警示邏輯] 底下,將 [閾值]、[彙總類型]、[運算子] 和 [單位] 保留為預設值。
  5. 臨界值設定為 0。 將其他設定保留為預設值。
  6. 選取 [下一步:動作]
  7. 選取 [建立動作群組]或選擇現有動作群組。
    1. 在 Azure 入口網站中建立 Azure 監視器警示動作群組,以設定通知設定,例如,傳送電子郵件給失敗的系統管理員或開發人員。
    2. 測試警示動作群組
  8. 選取 [下一步:詳細資料]。
  9. 提供訂用帳戶資源群組作為專案詳細資料
  10. 提供警示通訊的警示規則詳細資料。 提供警示規則名稱
  11. 選取 [標籤] 並提供中繼資料,例如此警示的建立者環境
  12. 選取 [檢閱 + 建立] 。 選取 建立。 警示規則可能需要幾分鐘後才會顯示在 Azure 入口網站中。
  13. 或者,使用 Azure 入口網站、Azure CLI 或 PowerShell 建立 Azure 監視器警示處理規則。 使用警示處理規則來決定觸發警示時會發生什麼情況,例如隱藏通知或將特定動作套用至特定類型的警示。

調整作業代理程式規模

根據預設,作業代理程式會在 JA100 建立,允許同時執行最多 100 個彈性作業。 初始服務等級變更是非同步作業,而且新的服務等級將在短暫佈建延遲之後提供。

如果您需要超過 100 個同時執行彈性作業代理程式,可以使用較高的服務等級,請參閱同時容量層級。 您目前可以透過 Azure 入口網站、PowerShell 或 REST API 變更作業代理程式的服務等級。

如果同時作業超過服務等級,會在作業啟動超過服務等級的同時作業限制之前建立佇列延遲。

使用 Azure 入口網站調整彈性作業代理程式規模

  1. 瀏覽至 Azure 入口網站中的 [彈性作業代理程式] 頁面。
  2. 選取 [定價層],或從內容功能表中選取 [擴大/縮小]。
  3. 從 [服務層] 下拉式清單中選擇新的服務層級 。
  4. 檢閱成本卡片。
  5. 選取更新

使用 PowerShell 調整彈性作業代理程式規模

Set-AzSqlElasticJobAgent 的選擇性 -ServiceObjective 參數可用來指定新的服務目標。 例如:

$parameters = @{
    Name = '<job agent name>'
    ResourceGroupName = '<Resource_Group_Name>'
    ServiceObjective = 'JA200'
}
Set-AzSqlElasticJobAgent @parameters

使用 REST API 調整彈性作業代理程式規模

您可以使用作業代理程式 REST API 來調整作業代理程式規模。 例如:

{ 
"id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/group1/providers/Microsoft.Sql/servers/server1/jobAgents/agent1", 
"name": "agent1", 
"type": "Microsoft.Sql/servers/jobAgents", 
"location": "southeastasia", 
"sku": {
"name": "JA100  ", 
"capacity": 100 
}, 
"properties": {  
"databaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/group1/providers/Microsoft.Sql/servers/server1/databases/db1"
}  
}