Azure VM 上适用于 SQL Server 的 SQL 最佳做法评估

适用于:Azure 虚拟机上的 SQL Server

Azure 门户的 SQL 最佳做法评估功能可以识别可能的性能问题,并使用 SQL 评估 API 提供的丰富规则集来评估 Azure 虚拟机 (VM) 上的 SQL Server 是否配置为遵循最佳做法。

概述

启用 SQL 最佳做法评估功能后,系统会扫描 SQL Server 实例和数据库,以提供有关索引、已弃用功能、已启用或缺失的跟踪标志、统计信息等方面的建议。建议显示在 Azure 门户SQL VM 管理页上。

使用 Azure Monitor 代理 (AMA) 将评估结果上传到 Log Analytics 工作区。 如果尚未安装 AMA 扩展,则会将该扩展安装到 SQL Server VM,同时创建 DCEDCR 等 AMA 资源并将其连接到指定的 Log Analytics 工作区。

评估运行时间取决于环境(数据库、对象等的数量),持续时间从几分钟到一个小时不等。 同样,评估结果的大小也取决于环境。 评估针对实例以及该实例上的所有数据库运行。 在测试中,我们观察到评估运行对计算机具有高达 5-10% 的 CPU 影响。 在这些测试中,评估是在类似 TPC-C 的应用程序针对 SQL Server 运行时执行。

先决条件

若要使用 SQL 最佳做法评估功能,必须满足以下先决条件:

  • SQL Server VM 必须已注册到 SQL Server IaaS 扩展
  • 一个与 SQL Server VM 位于同一订阅中的 Log Analytics 工作区,评估结果将上传到其中。
  • SQL Server 必须是 SQL Server 2012 或更高版本。

启用

可以使用 Azure 门户或 Azure CLI 启用 SQL 最佳做法评估。

若要使用 Azure 门户启用 SQL 最佳做法评估,请执行以下步骤:

  1. 登录到 Azure 门户并转到你的 SQL Server VM 资源
  2. “设置”中,选择 SQL 最佳做法评估
  3. 选择“启用 SQL 最佳做法评估”“配置”以导航到“配置”页。
  4. 选中“启用 SQL 最佳做法评估”框并提供以下信息:
    1. 评估结果要上传到的 Log Analytics 工作区。 从下拉列表中选择订阅中的现有工作区。
    2. 选择将在其中创建 Azure Monitor 代理资源 DCEDCR 的资源组。 如果跨多个 SQL Server VM 指定同一资源组,则会重复使用这些资源。
    3. 运行计划。 可以选择按需或按计划自动运行评估。 如果选择计划,请提供频率(每周或每月)、星期几、重复间隔(每隔 1-6 周),以及评估开始时间(VM 本地时间)。
  5. 选择“应用”以保存更改,并将 Azure Monitor 代理部署到 SQL Server VM(如果尚未部署)。 在 SQL 最佳做法评估功能可用于 SQL Server VM 后,Azure 门户会显示通知。

评估 SQL Server VM

评估可按以下方式运行:

  • 制定计划时
  • 按需

运行计划的评估

可以使用 Azure 门户和 Azure CLI 按计划配置评估。

如果在配置窗格中设置了计划,则将在指定的日期和时间自动运行评估。 选择“配置”可修改评估计划。 提供新计划后,以前的计划将被覆盖。

运行按需评估

为 SQL Server VM 启用 SQL 最佳做法评估功能后,可以使用 Azure 门户或 Azure CLI 按需运行评估。

若要使用 Azure 门户运行按需评估,请从 Azure 门户 SQL Server VM 资源页面的 SQL 最佳做法评估窗格中选择“运行评估”

查看结果

“SQL 最佳做法评估”页的“评估结果”部分显示最近的评估运行列表。 每行显示运行的开始时间和状态 - 已计划、正在运行、正在上传结果、已完成或失败。 每个评估运行包括两个部分:评估实例,将结果上传到 Log Analytics 工作区。 状态字段涵盖了这两个部分。 评估结果显示在 Azure 工作簿中。

可通过三种方式访问评估结果 Azure 工作簿:

  • “SQL 最佳做法评估”页上选择“查看最新的成功评估”按钮
  • “SQL 最佳做法评估”页的“评估结果”部分选择已完成的运行。
  • 从 SQL VM 资源页的“概述”页上显示的“前 10 条建议”中选择“查看评估结果” 。

打开工作簿后,可以使用下拉列表选择以前的运行。 可以使用“结果”页查看单个运行的结果,或使用“趋势”页查看历史趋势 。

结果页

“结果”页使用“全部”、“新”和“已解决”选项卡来组织建议。 使用这些选项卡可以查看当前运行的所有建议、所有新建议(先前运行的增量建议)或先前运行的已解决建议。 选项卡可帮助跟踪各个运行的进度。 “见解”选项卡列出最经常出现的问题以及问题最多的数据库。 使用这些信息可以决定要将注意力集中在哪个地方。

图形按不同的严重性类别(高、中、低)将评估结果和信息分组。 选择每个类别以查看建议列表,或者在搜索框中搜索关键短语。 最好从严重性最高的建议开始,然后在列表中查看后面的建议。

第一个网格显示每个建议,以及环境出现该问题的实例数。 选择第一个网格中的行时,第二个网格将列出该特定建议的所有实例。 如果第一个网格中未选择任何内容,则第二个网格将显示所有建议。 这可能是一个大列表。 可以使用网格上方的下拉列表 (名称、严重性、标记、检查 ID) 筛选结果。 还可使用“导出到 Excel”,选择每个网格右上角的小图标,在“日志视图”选项中打开最后一个运行查询

图形的“已通过”部分列出系统已遵循的建议。

通过选择“消息”字段查看每条建议的详细信息,例如长说明和相关联机资源。

“趋势”页上提供三个图表用于显示一段时间的变化:所有问题、新问题和已解决的问题。 图表可帮助你查看进度。 理想情况下,建议的数量应会减少,而已解决的问题数量应会增加。 图例显示每个严重性级别的平均问题数。 将鼠标悬停在条形上可查看每个运行的各项值。

如果在一天中完成了多个运行,则“趋势”页上的图形只会包含最新的运行。

为订阅中的所有 VM 启用

可以使用 Azure CLI 在订阅中的所有 SQL Server VM 上启用 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 Monitor 代理 (AMA)

以前,SQL 最佳做法评估功能使用 MMA 将评估上传到 Log Analytics 工作区。 MMA 即将停用。 此功能现在使用 AMA 上传评估。 如果过去使用 MMA 启用了 SQL 最佳做法评估,则可以通过先禁用然后重新启用该功能的方式轻松迁移到 AMA。 只要指定相同的 Log Analytics 工作区,在禁用/启用操作后,现有结果就仍然可用。 如果其他服务未使用 Microsoft Monitoring Agent,此时便可按照这些说明删除该代理。 在迁移之前,请使用此处链接的表来确保 SQL Server VM 所在的区域中支持 Azure Monitor Log Analytics。

为部署启用或运行评估失败

请参阅包含 SQL VM 的资源组的部署历史记录,以查看与失败操作关联的错误消息。

评估失败

如果评估或上传结果因某种原因失败,该运行的状态将指示失败。 单击状态会打开一个上下文窗格,可在其中查看有关失败的详细信息以及解决问题的可能方法。

提示

如果已在 Windows 中强制实施 TLS 1.0 或更高版本,并已按此文所述禁用了旧式 SSL 协议,则还必须确保 .NET Framework 已配置为使用强加密。

后续步骤