启用 Microsoft SQL 的性能监控(预览版)

本文解释了如何启用和禁用 Microsoft SQL 服务的性能监控,使性能数据出现在数据库中心的性能页面上。 启用性能监控不会额外花费。 你不需要部署或维护监控代理、数据存储或其他监控基础设施。

Important

此功能目前为预览版。

开启性能监控的步骤因服务而异。 开启监控后,每个服务都会将性能数据发送到同一个遥测管道。 数据库中心利用这些数据帮助识别性能问题并创建仪表盘。 你也可以直接用KQL查询遥测数据。 欲了解更多信息,请参见查询性能监测遥测。 本文介绍以下服务:

你可以在数据库中心通过Azure、Fabric和本地端查看Microsoft SQL资源。 包括以下资源类型:

  • Azure SQL 数据库
  • Azure SQL 托管实例
  • Azure VM 上的 SQL Server
  • 由Azure Arc启用的SQL Server
  • Azure SQL 数据库弹性池
  • Fabric 中的 SQL 数据库

以下资源类型在数据库中心可见,但 性能 页面尚未支持:

  • Fabric 中的 SQL 数据库
  • Azure SQL 数据库弹性池
  • Azure SQL 托管实例
  • 性能监控不会从Azure SQL 数据库弹性池或二级副本中的数据库收集数据。

区域可用性与数据处理

以下 Azure 区域中的 Microsoft SQL 资源支持性能监控。 预览期间不支持政府云、主权云和空隔离云。 有关详细信息,请参阅 Fabric 区域可用性。

  • Brazil South
  • 加拿大中部
  • 加拿大东部
  • 美国中部
  • 美国东部
  • 美国东部 2
  • 美国中北部
  • 美国中南部
  • 美国中西部
  • 美国西部
  • 美国西部 2
  • 美国西部 3

性能监视从你的 SQL 资源上的动态管理视图(DMV)中收集性能数据。 性能监控不会收集任何个人数据或客户内容,数据也不会存储在被监控的SQL资源地理范围之外。

注册 Azure 资源提供程序

要查看性能监控数据,请在每个包含你想监控的数据库资源的订阅中注册资源 Microsoft.AzureArcData 提供者。 欲了解更多信息,请参见 az provider register。

az provider register --namespace Microsoft.AzureArcData

要检查注册状态,请执行以下命令。 当命令返回 Registered时,注册完成。

az provider show --namespace Microsoft.AzureArcData --query "registrationState" --output tsv

为 Azure SQL 数据库 启用性能监视

使用以下方法之一:

  • 在数据库中心,进入 庄园 页面,选择资源,然后选择 启用性能监控。
  • 对每个你想监控的用户数据库运行以下 T-SQL 脚本。 不要在数据库里运行脚本 master 。 要同时将脚本应用到多个服务器,可以考虑在 SQL Server Management Studio(SSMS)中进行多服务器查询。 将 MS_EnablePerformanceMonitoringPreview 扩展属性添加到要监控的每个用户数据库中。
IF EXISTS (
    SELECT 1
    FROM sys.extended_properties
    WHERE class = 0
      AND name = N'MS_EnablePerformanceMonitoringPreview'
)
BEGIN
    EXEC sys.sp_updateextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END
ELSE
BEGIN
    EXEC sys.sp_addextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END;
GO

如何禁用 Azure SQL 数据库 的性能监控

要停止收集用户数据库的性能数据,请在两个过程调用中切换 @value = N'true' 到, @value = N'false' 然后在该数据库上重新运行T-SQL脚本。

为 Azure VM 上的 SQL Server 启用性能监视

为了在 Azure 虚拟机上实现 SQL Server 的性能监控,可以在 SQL IaaS Agent 扩展的公开设置中添加DatabaseWatcheronAzureVM功能标志。 扩展随后从SQL Server实例收集性能数据,并利用虚拟机系统分配的管理身份将其上传到区域遥测端点。 监控是按虚拟机配置的。 在一个虚拟机上启用功能标志并不会激活其他虚拟机的监控。

有关验证、故障排除及完整数据集列表,请参见“启用 Azure 虚拟机上的 SQL Server 性能监控”。

Azure 虚拟机上 SQL Server 的先决条件

  • 性能监控支持 Azure 虚拟机上的 SQL Server 2016 SP1 及更高版本。 SQL Server不支持2016 SQL Server SP1之前的版本。
  • 性能监控收集 SQL Server Enterprise 和 Standard 版本的所有数据集。 对于 SQL Server Developer、Express 和 Evaluation 版本,性能监控仅收集客户端连接数据。
  • 您必须以完整管理模式安装 SQL IaaS代理扩展 版本 2.0.229.0 或更高版本。 你必须启用扩展,且其配置状态必须为 成功。
  • 虚拟机必须启用 系统分配的托管身份 。
  • SQL Server实例资源必须通过统一库存可用。
  • 您必须注册Microsoft.AzureArcData资源提供者以获取订阅。
  • 虚拟机必须允许通过端口 telemetry.<region>.arcdataservices.com 与 443 建立出站 HTTPS 连接,其中,<region> 是托管该虚拟机的 Azure 区域。
  • 你需要最新版本的 Azure CLI。
  • 您需要权限才能查看和更新虚拟机上的扩展,例如虚拟机 贡献者角色 的成员身份。

如何在 Azure 虚拟机上启用 SQL Server 的性能监控

Important

SQL IaaS 代理扩展设置不是累积的。 更新扩展时,请包含所有现有的公开设置,以避免无意中禁用其他功能。

以下PowerShell步骤会获取当前的公开设置,添加性能监控功能标志,并将合并后的设置应用到扩展中。

  1. 在安装了 Azure CLI 的环境中打开 PowerShell,然后登录 Azure。

    az login
    
  2. 为你的 SQL Server 虚拟机设置变量。

    $subscriptionId = "<subscription-id>"
    $resourceGroup = "<resource-group>"
    $vmName = "<vm-name>"
    
    az account set --subscription $subscriptionId
    
  3. 检索当前的SQL IaaS代理扩展设置。

    $extension = az vm extension show `
      --resource-group $resourceGroup `
      --vm-name $vmName `
      --name SqlIaasExtension `
      --query "{settings:settings,typeHandlerVersion:typeHandlerVersion}" `
      --output json | ConvertFrom-Json
    
    if ($null -eq $extension.settings) {
      $settings = [pscustomobject]@{}
    }
    else {
      $settings = $extension.settings
    }
    
  4. 在保留现有功能标志的同时添加 DatabaseWatcheronAzureVM 功能标志。

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $true
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  5. 保存合并后的设置,并将其应用到SQL IaaS代理扩展中。

    $settingsPath = Join-Path $env:TEMP "sqlvm-performance-monitoring-settings.json"
    
    try {
      $settings |
        ConvertTo-Json -Depth 50 |
        Out-File -FilePath $settingsPath -Encoding utf8
    
      az vm extension set `
        --resource-group $resourceGroup `
        --vm-name $vmName `
        --publisher Microsoft.SqlServer.Management `
        --name SqlIaaSAgent `
        --extension-instance-name SqlIaasExtension `
        --settings "@$settingsPath"
    }
    finally {
      Remove-Item $settingsPath -ErrorAction SilentlyContinue
    }
    
  6. 对你想监控的每个虚拟机重复这些步骤。

扩展会自动重新加载公共设置。 你不需要重启 SQL Server IaaS 代理服务或虚拟机。 大多数性能数据在设置生效后3到5分钟内即可获得。 某些基于库存的数据最多可能需要 15 分钟。

要确认监控正在运行,请查看扩展状态:

az vm extension show `
  --resource-group $resourceGroup `
  --vm-name $vmName `
  --name SqlIaasExtension `
  --instance-view `
  --query "instanceView.statuses[0].message" `
  --output tsv

当性能监控运行并成功上传数据时,状态包括 DatabaseMonitorArcPlugin: {"State":"Running","MetricsUploadStatus":"OK"}。 为了确认数据可用,可以在 查询性能监控遥测中运行连接测试查询。

禁用 Azure VM 上 SQL Server 的性能监视

要停止为虚拟机收集新的性能数据,请将功能标志设置为 DatabaseWatcheronAzureVMfalse。 将变更与现有的公开设置合并,以确保其他SQL IaaS代理扩展功能不受影响。

  1. 完成步骤1到3:在Azure虚拟机上启用SQL Server性能监控,登录、设置变量并获取当前设置。

  2. 在保留现有功能标志的同时,将 DatabaseWatcheronAzureVM 功能标志设置为 false。

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $false
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  3. 在 Azure 虚拟机上启用 SQL Server 的性能监控中完成第 5 步,将合并后的设置应用到扩展中。

等待几分钟让新设置生效,然后再次查看扩展状态以确认更改。

为已启用 Azure Arc 的 SQL Server 启用性能监视

已启用 Azure Arc 的 SQL Server 的性能监控默认开启。 当实例满足本节所有前提条件时,它会自动收集性能数据,无需采取其他步骤。 欲了解更多信息,请参见“监控由 Azure Arc 启用的 SQL Server。

已启用 Azure Arc 的 SQL Server 的先决条件

  • SQL Server 的 Azure 扩展 (WindowsAgent.SqlServer) 版本必须为 1.1.2504.99 或更高版本。
  • SQL Server必须在Windows上运行。 不支持Linux 上的 SQL Server。 Windows Server 2012 R2及更早版本上的SQL Server不被支持。
  • SQL Server必须是标准版或企业版。
  • SQL Server必须是2016 SP1或更高版本。
  • 服务器必须能够连接到 *.<region>.arcdataservices.com。 有关详细信息,请参阅 网络要求。
  • Azure Arc 启用的 SQL Server 许可证类型必须是软件保障或按用付费。
  • 你需要一个包含 Microsoft.AzureArcData/sqlServerInstances/getTelemetry/ 操作的 Azure 角色。 内置的 Azure 混合数据库管理员 - 只读服务角色包含了此操作。 有关详细信息,请参阅 Azure 内置角色。
  • 目前不支持故障转移群集实例。

如何启用由 Azure Arc 启用的 SQL Server 的性能监控

以下命令可实现性能数据收集。 命令可能成功运行,但系统仅在实例满足本节所有前提条件时收集性能数据。

若要在 Azure 门户中启用或禁用收集功能:

  1. 在 Azure Arc 启用的 SQL Server 的资源页上,选择“性能仪表板(预览)”。
  2. 在“性能仪表板”窗格顶部,选择“配置”。
  3. 在 “配置监控设置 ”面板中,使用开关打开监控数据收集。
  4. 选择“应用设置”。

要通过使用 Azure CLI 启用集合,请执行以下命令。 请将占位符替换为订阅 ID、资源组名称和资源名称。

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=true' --api-version 2023-09-01-preview

如何禁用由 Azure Arc 启用的 SQL Server 的性能监控

在 Azure 门户中启用或禁用收集:

  1. 在 Azure Arc 启用的 SQL Server 的资源页上,选择“性能仪表板(预览)”。
  2. 在“性能仪表板”窗格顶部,选择“配置”。
  3. 在 “配置监控设置 ”面板中,使用开关关闭监控数据收集。
  4. 选择“应用设置”。

要使用Azure CLI禁用集合,请执行以下命令。 请将占位符替换为订阅 ID、资源组名称和资源名称。

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=false' --api-version 2023-09-01-preview

后续步骤