適用於 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 最佳做法評定功能,您必須具備下列必要條件:

啟用

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

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

  1. 登入 Azure 入口網站,並移至您的 SQL Server VM 資源
  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 Server VM 資源頁面的 [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 最佳做法評定時,您可能會遇到下列的一些已知問題。

從 Microsoft Monitoring Agent (MMA) 移轉至 Azure 監視器代理程式 (AMA)

先前,SQL 最佳做法評量功能使用 MMA 將評量上傳至 Log Analytics 工作區。 MMA 即將淘汰。 此功能現在使用 AMA 來上傳評定。 如果您過去已使用 MMA 啟用 SQL 最佳做法評量,您可以輕鬆地移轉至 AMA,方式是先停用,然後重新啟用此功能。 只要指定相同的 Log Analytics 工作區,現有結果在停用/啟用作業後仍然可用。 如果其他服務未使用它,此時您可以遵循這些指示移除 Microsoft Monitoring Agent。 在移轉之前,使用此處連結的資料表確保 SQL Server VM 所在的區域支援 Azure 監視器 Log Analytics。

啟用或執行評量的部署失敗

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

評定失敗

如果評定或上傳結果因某些原因而失敗,則執行的狀態會表示失敗。 按一下狀態會開啟 [內容] 窗格,您可以查看失敗的詳細資料,以補救問題的可能方式。

提示

如果您已依照此處中的說明在 Windows 中強制執行 TLS 1.0 或更高版本,並停用較舊的 SSL 通訊協定,則您也必須確定 .NET Framework 已設定為使用強式密碼編譯。

後續步驟