適用於 Azure VM 上 SQL Server 的 SQL 最佳做法評定

適用於:Azure VM 上的 SQL Server

Azure 入口網站的 SQL 最佳做法評定功能會使用 SQL 評定 API 所提供的各種規則集,找出可能的效能問題並評定 Azure 虛擬機器 (VM) 上的 SQL Server 是否已設定為遵循最佳做法。

若要深入了解,請觀看這段關於 SQL 最佳做法評定的影片:

概觀

在啟用 SQL 最佳做法評定功能之後,系統會掃描您的 SQL Server 執行個體和資料庫以提供索引、過時功能、啟用或缺少追蹤旗標、統計資料等的建議。建議會顯示在 Azure 入口網站SQL VM 管理頁面中。

會使用 Azure Monitor Agent (AMA),將評定結果上傳至 Log Analytics 工作區。 AMA 延伸項目將安裝至 SQL Server VM (如果尚未安裝),且會建立 DCEDCR 等 AMA 資源並將其連線至指定的 Log Analytics 工作區。

評定執行時間取決於您的環境 (物件或資料庫等的數目),持續時間可能為幾分鐘至多一小時。 評定結果的大小同樣也取決於您的環境。 評定會根據您的執行個體和該執行個體上的所有資料庫執行。 在我們的測試中,我們觀察到評定執行最多可能會對電腦造成 5-10% 的 CPU 影響。 在這些測試中,會在針對 SQL Server 執行 TPC-C 之類的應用程式時完成評定。

必要條件

若要使用 SQL 最佳做法評定功能,您必須具備下列必要條件:

權限

若要啟用 SQL 最佳做法評量,您需要下列權限:

  • 基礎虛擬機器資源上的虛擬機器參與者
  • SQL 基礎虛擬機器資源上的虛擬機器參與者
  • 包含 Log Analytics 工作區的資源群組上的 Log Analytics 參與者
  • 在建立 Azure 監視器代理程式資源的資源群組上的讀者。 當您啟用 SQL 最佳做法評量功能時,請檢查資源群組的組態選項。

啟用

您可以使用 Azure 入口網站或 Azure CLI 來啟用 SQL 最佳做法評量。

若要使用 Azure 入口網站來啟用 SQL 最佳做法評量,請遵循下列步驟:

  1. 登入 Azure 入口網站,並移至 SQL 虛擬機器資源。
  2. 選取 [設定] 下的 [SQL 最佳做法評定]。
  3. 選取 [啟用 SQL 最佳做法評定] 或 [設定] 以瀏覽至 [設定] 頁面。
  4. 核取 [啟用 SQL 最佳做法評定] 方塊並提供下列項目:
    1. 上傳評定的 Log Analytics 工作區。 從下拉式清單中選擇訂用帳戶中的現有工作區。
    2. 選擇將在其中建立 Azure 監視器代理程式資源 DCEDCR 的資源群組。 如果您跨多個 SQL Server VM 指定相同的資源群組,會重複使用這些資源。
    3. 執行排程。 您可以選擇依需求執行評定或依排程自動執行。 如果您選擇排程,則請提供頻率 (每週或每月)、當週天數、週期性 (每 1 至 6 週),以及當天開始評定的時間 (本機至 VM 時間)。
  5. 選取 [套用] 以儲存變更,並將 Azure Monitor Agent 部署至 SQL Server VM (如果尚未部署)。 當 SQL 最佳做法評量功能已可供您的 SQL Server VM 使用時,隨即向您顯示 Azure 入口網站通知。

評定 SQL Server VM

評定執行:

  • 在排程上
  • 隨選

執行排程的評定

您可以使用 Azure 入口網站 和 Azure CLI,依排程設定評量。

如果您在 [設定] 窗格中設定排程,則評定會在指定的日期和時間自動執行。 選擇 [設定] 以修改您的評定排程。 在您提供新的排程後,便會覆寫先前的排程。

依需求執行評量

在為您的 SQL Server 虛擬機器啟用 SQL 最佳做法評量功能之後,就可以依需求用 Azure 入口網站或 Azure CLI 來執行評量。

若要使用 Azure 入口網站來執行隨選評量,請從 Azure 入口網站中 [SQL 虛擬機器] 資源頁面的 [SQL 最佳做法評量] 窗格中,選取 [執行評量]

檢視結果

[SQL 最佳做法評定] 頁面的 [評定結果] 區段會顯示最新評定執行的清單。 每個資料列會顯示執行的開始時間,以及狀態:已排程、執行中、正在上傳結果、完成或失敗。 每個評定執行均有兩個部分:評估您的執行個體,以及將結果上傳至您的 Log Analytics 工作區。 [狀態] 欄位涵蓋這兩個部分。 評定結果會顯示在 Azure 活頁簿中。

存取 Azure 活頁簿中的評定結果共有三種方式:

  • 選取 [SQL 最佳做法評定] 頁面上的 [檢視最新的成功評定] 按鈕。
  • 從 [SQL 最佳做法評定] 頁面的 [評定結果] 區段,選取完成的執行。
  • 從 [SQL VM 資源] 頁面的 [概觀] 頁面上顯示的 [前 10 個建議],選取 [檢視評定結果]。

在開啟活頁簿之後,您可以使用下拉式清單選取先前的執行。 您可以使用 [結果] 頁面來檢視單一執行的結果,或使用 [趨勢] 頁面來檢閱歷程記錄的趨勢。

結果頁面

[結果] 頁面會使用以下索引標籤來組織建議:

  • 全部:目前執行的所有建議
  • 新增:新建議 (先前執行的差異)
  • 已解決:已解決先前執行的建議
  • 深入解析:識別最常發生的問題,以及最有問題的資料庫。

圖表會依不同類別的嚴重性 (高、中、低和資訊) 分組評定結果。 選取每個類別以查看建議的清單,或在 [搜尋] 方塊中搜尋關鍵片語。 建議從最嚴重的建議開始,然後依序瀏覽清單。

第一個方格會顯示每個建議,以及您環境遇到該問題的執行個體數目。 當您在第一個方格中選取一個資料列時,第二個方格會列出該特定建議的所有執行個體。 如果未在第一個方格中選取任何項目,則第二個方格會顯示所有建議,且該清單可能很長。 您可以使用方格上方的下拉式清單 ([名稱]、[嚴重性]、[標籤]、[檢查識別碼]) 來篩選結果。 您也可以使用 [匯出至 Excel] 和 [在記錄檢視中開啟上次執行的查詢] 選項,方法是選取每個方格右上角的小型圖示。

圖表的 [已通過] 區段會識別您已遵循的建議。

選取 [訊息] 欄位以檢視每個建議的詳細資訊,例如詳細說明和相關的線上資源。

[趨勢] 頁面上有三個圖表,顯示隨時間的變更:所有問題、新的問題和已解決的問題。 這些圖表可協助您查看進度。 一般來說,建議的數目會下降,而以解決的問題會上升。 圖例會顯示每個嚴重性層級的平均問題數目。 將滑鼠停留在橫條上方,以查看每次執行的個別值。

如果在一天內有多次執行,則只有最新的執行會包含在 [趨勢] 頁面上的圖表中。

針對訂用帳戶中的所有 VM 啟用

您可以使用 Azure CLI,在訂用帳戶中的所有 SQL Server 虛擬機器上,啟用 SQL 最佳做法評量功能。 若要這樣做,請使用下列指令碼:

# This script is formatted for use with Az CLI on Windows PowerShell. You may need to update the script for use with Az CLI on other shells.
# This script enables SQL best practices assessment feature for all SQL Servers on Azure VMs in a given subscription. It configures the VMs to use a Log Analytics workspace to upload assessment results. It sets a schedule to start an assessment run every Sunday at 11pm (local VM time).
# Please note that if a VM is already associated with another Log Analytics workspace, it will give an error.
 
$subscriptionId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
# Resource Group where the Log Analytics workspace belongs
$myWsRg = 'myWsRg'
# Log Analytics workspace where assessment results will be stored
$myWsName = 'myWsName'
# Resource Group where the Azure Monitor Agent resources will be created
$myAgentRg = 'myAgentRg'
 
# Ensure in correct subscription
az account set --subscription $subscriptionId
 
$sqlvms = az sql vm list | ConvertFrom-Json 
 
foreach ($sqlvm in $sqlvms)
{
  echo "Configuring feature on $($sqlvm.id)"
  az sql vm update --assessment-weekly-interval 1 --assessment-day-of-week Sunday --assessment-start-time-local "23:00" --workspace-name $myWsName --workspace-rg $myWsRg -g $sqlvm.resourceGroup --agent-rg $myAgentRg -n $sqlvm.name
  
  # Alternatively you can use this command to only enable the feature without setting a schedule
  # az sql vm update --enable-assessment true --workspace-name $myWsName --workspace-rg $myWsRg -g $sqlvm.resourceGroup --agent-rg $myAgentRg -n $sqlvm.name  
 
  # You can use this command to start an on-demand assessment on each VM
  # az sql vm start-assessment -g $sqlvm.resourceGroup -n $sqlvm.name
}

已知問題

在使用 SQL 最佳做法評定時,您可能會遇到下列的一些已知問題。

移轉至 Azure 監視器代理程式 (AMA)

先前,SQL 最佳做法評量功能使用 Microsoft Monitoring Agent (MMA) 將評量上傳至 Log Analytics 工作區。 Microsoft Monitoring Agent 已取代為 Azure 監視器代理程式 (AMA)。 若要將現有的 SQL 最佳做法評量從 MMA 移轉至 AMA,您必須刪除,然後再次使用延伸項目註冊您的 SQL Server VM。 啟用評定之後,您的現有結果仍可供使用。 如果 MMA 未由其他服務使用,您可以將其移除。 在移轉之前,確保部署 SQL Server VM 的區域支援 Azure 監視器 Log Analytics。

無法啟用評定

請參閱包含 SQL VM 之資源群組的部署歷程記錄,以檢視與失敗的動作相關聯的錯誤訊息。

無法執行評定

檢查評定在 Azure 入口網站中執行的狀態。 如果狀態失敗,請選取狀態以檢視錯誤訊息。 您也可以登入 VM,並檢閱 C:\WindowsAzure\Logs\Plugins\Microsoft.SqlServer.Management.SqlIaaSAgent\2.0.X.Y 上延伸項目記錄中失敗評定的詳細錯誤訊息,其中 2.0.X.Y 是延伸項目的版本。

如果您在執行評定時遇到問題:

  • 請確保您的環境符合所有必要條件
  • 請確保 SQL IaaS 代理程式服務正在 VM 上執行,且 ‬SQL IaaS 代理程式延伸模組處於狀況良好狀態。 如果 ‬SQL IaaS 代理程式延伸模組狀況不良,請修復延伸項目以解決任何問題,並將其升級至最新版本,而不不會發生任何 SQL Server 停機。
  • 如果您看到 NT SERVICE\SqlIaaSExtensionQuery 的登入失敗,請確保帳戶存在於具有 Server permission - CONTROL SERVER 權限的 SQL Server 中。

將結果上傳到 Log Analytics 工作區失敗

該錯誤表示 Microsoft Monitoring Agent (MMA) 無法在預期的時間範圍內上傳結果。

如果您的結果無法上傳至 Log Analytics 工作區,請嘗試下列動作:

使用 Log Analytics 的 TLS 設定不正確的錯誤

若 Microsoft Monitoring Agent (MMA) 延伸項目連線到 Log Analytics 端點時無法建立 SSL 交握,便會發生最常見的 TLS 錯誤,這通常是在 OS 層級的登錄或 GPO 強制執行 TLS 1.0 時發生,但不會更新 .NET Framework。 如果您已依照安全通道特定登錄機碼中的說明在 Windows 中強制執行 TLS 1.0 或更高版本,並停用較舊的 SSL 通訊協定,則您還需要確定 .NET Framework 已設定為使用強式加密

設定 SQL 評定之後,無法變更 Log Analytics 工作區

在 VM 與 Log Analytics 工作區建立關聯之後,就無法從 SQL 虛擬機器資源加以變更。 這是為了避免在其他使用案例中使用 Log Analytics。 您可以使用 Azure 入口網站中 [虛擬機器] 頁面的 [Log Analytics 資源] 刀鋒視窗來中斷 VM 的連線。

由於 Log Analytics 工作區資料保留,結果已過期

這表示根據保留原則,不會再將結果保留在 Log Analytics 工作區中。 您可以為工作區變更保留期間