適用於 Azure VM 上 SQL Server 的 SQL 最佳做法評定
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 (如果尚未安裝),且會建立 DCE、DCR 等 AMA 資源並將其連線至指定的 Log Analytics 工作區。
評定執行時間取決於您的環境 (物件或資料庫等的數目),持續時間可能為幾分鐘至多一小時。 評定結果的大小同樣也取決於您的環境。 評定會根據您的執行個體和該執行個體上的所有資料庫執行。 在我們的測試中,我們觀察到評定執行最多可能會對電腦造成 5-10% 的 CPU 影響。 在這些測試中,會在針對 SQL Server 執行 TPC-C 之類的應用程式時完成評定。
必要條件
若要使用 SQL 最佳做法評定功能,您必須具備下列必要條件:
- 您的 SQL Server 虛擬機器必須向 SQL Server IaaS 延伸模組註冊。
- 與 SQL Server VM 位於相同訂用帳戶中的 Log Analytics 工作區 是上傳評定結果的位置。
- SQL Server 必須是 2012 或更高版本。
啟用
您可以使用 Azure 入口網站或 Azure CLI 來啟用 SQL 最佳做法評量。
若要使用 Azure 入口網站來啟用 SQL 最佳做法評量,請遵循下列步驟:
- 登入 Azure 入口網站,並移至您的 SQL Server VM 資源。
- 選取 [設定] 下的 [SQL 最佳做法評定]。
- 選取 [啟用 SQL 最佳做法評定] 或 [設定] 以瀏覽至 [設定] 頁面。
- 核取 [啟用 SQL 最佳做法評定] 方塊並提供下列項目:
- 上傳評定的 Log Analytics 工作區。 從下拉式清單中選擇訂用帳戶中的現有工作區。
- 選擇將在其中建立 Azure 監視器代理程式資源 DCE 和 DCR 的資源群組。 如果您跨多個 SQL Server VM 指定相同的資源群組,會重複使用這些資源。
- 執行排程。 您可以選擇依需求執行評定或依排程自動執行。 如果您選擇排程,則請提供頻率 (每週或每月)、當週天數、週期性 (每 1 至 6 週),以及當天開始評定的時間 (本機至 VM 時間)。
- 選取 [套用] 以儲存變更,並將 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 之資源群組的部署歷程記錄,以檢視與失敗的動作相關聯的錯誤訊息。
評定失敗
如果評定或上傳結果因某些原因而失敗,則執行的狀態會表示失敗。 按一下狀態會開啟 [內容] 窗格,您可以查看失敗的詳細資料,以補救問題的可能方式。
後續步驟
- 若要將具有 SQL Server IaaS 延伸模組的 SQL Server VM 註冊至 SQL Server,請參閱自動安裝、單一 VM 或大量 VM 的文章。
- 若要了解 SQL Server IaaS 延伸模組提供至 Azure VM 上 SQL Server 的更多功能,請參閱使用 Azure 入口網站管理 SQL Server VM。