配置诊断遥测的流式导出 - Azure SQL 数据库和 Azure SQL 托管实例

适用于:Azure SQL 数据库Azure SQL 托管实例

本文介绍 Azure SQL 数据库的性能指标和资源日志,可以导出到多个目标之一进行分析。 本文介绍如何通过 Azure 门户、PowerShell、Azure CLI、REST API 和 Azure 资源管理器模板配置此诊断遥测的流式导出。

你还将了解可以流式传输此诊断遥测数据的目标,以及如何在这些选项中进行选择。 可供选择的目的地包括:

  • Log Analytics
  • 事件中心
  • Azure 存储

用于导出的诊断遥测

可以导出各种性能指标和其他数据库日志。 下表描述了可以配置为流式导出到多个目标之一的性能指标和资源日志。 可以为单一数据库、弹性池和共用数据库以及 SQL 托管实例及其数据库配置此诊断遥测。

数据库诊断遥测 Azure SQL 数据库支持 Azure SQL 托管实例支持
基本指标:包含 DTU/CPU 百分比、DTU/CPU 限制、物理数据读取百分比、日志写入百分比、成功/失败/防火墙阻止的连接数、会话百分比、辅助角色百分比、存储、存储百分比和 XTP 存储百分比。
实例和应用高级指标:包含所使用的 tempdb 系统数据库数据和日志文件大小以及 tempdb 百分比日志文件。
QueryStoreRuntimeStatistics:包含有关查询运行时统计信息的信息,例如 CPU 使用率、查询持续时间统计信息。
QueryStoreWaitStatistics:包含有关查询等待统计信息(查询等待的内容)的信息,例如 CPU、LOG 和 LOCKING。
错误:包含有关数据库发生的 SQL 错误的信息。
DatabaseWaitStatistics:包含有关数据库针对不同等待类型花费多少时间等待的信息。
Timeouts:包含关于数据库超时的信息。
Blocks:包含有关数据库发生的阻塞事件的信息。
死锁:包含有关数据库发生的死锁事件的信息。
AutomaticTuning:包含有关数据库的自动优化建议的信息。
SQLInsights:包含针对数据库性能的智能见解。 有关详细信息,请参阅 Intelligent Insights 来监视和排查数据库性能问题(预览版)。
工作负荷管理:仅适用于 Azure Synapse 有关详细信息,请参阅 Azure Synapse Analytics - 工作负荷管理门户监视

注意

在 Azure SQL 托管实例中,无法为 系统数据库 (例如 mastermsdbmodel资源和 tempdb 数据库)配置诊断设置。

流式数据导出的目标

可以将此诊断遥测流式传输到以下 Azure 资源之一进行分析。

  • Log Analytics 工作区

    将数据流式传输到 Log Analytics 工作区

  • Azure 事件中心

    将数据流式传输到 Azure 事件中心可提供以下功能:

    • 将日志流式传输到第三方日志记录和遥测系统:将所有指标和资源日志流式传输到单个事件中心,以将日志数据通过管道传输到第三方 SIEM 或日志分析工具。
    • 生成自定义遥测和日志记录平台:可利用 Azure 事件中心的高度可扩展的发布-订阅特性灵活地将指标和资源日志引入自定义遥测平台。 有关详细信息,请参阅 Azure 事件中心
  • Azure 存储

    通过将数据流式传输到 Azure 存储,可以存档大量的诊断遥测数据,以节省前两个流式处理选项的成本的一小部分。

可以使用流式传输到这些目标之一的诊断遥测来衡量资源利用和查询执行统计信息,从而轻松监控性能。

关系图显示了托管实例中向 Azure 诊断发送遥测数据的许多 SQL 数据库和数据库。

启用和配置诊断遥测数据的流式导出

可使用以下方法之一来启用和管理指标与诊断遥测日志记录:

  • Azure 门户
  • PowerShell
  • Azure CLI
  • Azure Monitor REST API
  • Azure Resource Manager 模板

配置诊断遥测数据的流式导出

使用 Azure 门户中的 “诊断设置” 菜单启用和配置诊断遥测的流式传输。 此外,还可以使用 PowerShell、Azure CLI、REST API资源管理器模板来配置诊断遥测数据的流式传输。 可设置以下目标来流式传输诊断遥测数据:Azure 存储、Azure 事件中心和 Azure Monitor 日志。

重要

默认情况下,不会启用诊断遥测的流式导出。

选择以下选项卡之一,获取有关在 Azure 门户中配置诊断遥测数据的流式导出的分步指导,以及用于在 PowerShell 和 Azure CLI 中实现相同目的的脚本。

Azure SQL 数据库中的弹性池

可将弹性池资源设置为收集以下诊断遥测数据:

资源 监控遥测数据
弹性池 基本指标包含 eDTU/CPU 百分比、eDTU/CPU 限制、物理数据读取百分比、日志写入百分比、会话百分比、辅助角色百分比、存储、存储百分比、存储限制,以及 XTP 存储百分比。

要为弹性池和共用数据库配置诊断遥测的数据流,需要单独配置每个资源:

  • 为弹性池启用诊断遥测数据的流式传输
  • 为弹性池中的每个数据库启用诊断遥测流式传输

弹性池容器具有其独立的遥测数据,与每个独立汇聚数据库的遥测数据是分开的。

若要为弹性池资源启用诊断遥测流,请执行以下步骤:

  1. 在 Azure 门户中转到弹性池资源。

  2. 选择“诊断设置”。

  3. 选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置

    为弹性池启用诊断的屏幕截图。

  4. 输入设置名称供自己参考。

  5. 选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。

  6. 对于 Log Analytics,请选择“配置”,并通过选择“+创建新工作区”来创建新工作区;或者选择现有的工作区。

  7. 选中弹性池诊断遥测的复选框:基本指标。 配置弹性池诊断的屏幕截图。

  8. 选择“保存” 。

  9. 另外,请为弹性池中需要监视的每个数据库配置诊断遥测数据的实时流,按照下一部分所述的步骤进行操作。

重要

除了为弹性池配置诊断遥测数据,还需为弹性池中的每个数据库配置诊断遥测数据。

Azure SQL 数据库中的数据库

可将数据库资源设置为收集以下诊断遥测数据:

资源 监控遥测
单一数据库或共用数据库 基本指标 包括 DTU 百分比、DTU 已用、DTU 限制、CPU 百分比、物理数据读取百分比、日志写入百分比、防火墙连接成功/失败/阻止、会话百分比、辅助角色百分比、存储百分比、XTP 存储百分比和死锁。

若要为单一数据库或共用数据库启用诊断遥测数据的流式传输,请执行以下步骤:

  1. 转到 Azure SQL 数据库资源。

  2. 选择“诊断设置”。

  3. 选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置 最多可以创建三个并行连接用于流式传输诊断遥测数据。

  4. 选择“添加诊断设置”,以便配置将诊断数据并行流式传输到多个资源。

    为单一数据库和共用数据库启用诊断的屏幕截图。

  5. 输入设置名称供自己参考。

  6. 选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。

  7. 对于标准的基于事件的监视体验,请选中数据库诊断日志遥测对应的以下复选框:“SQLInsights”、“AutomaticTuning”、“QueryStoreRuntimeStatistics”、“QueryStoreWaitStatistics”、“Errors”、“DatabaseWaitStatistics”、“Timeouts”、“Blocks”和“Deadlocks”。

  8. 对于高级的一分钟间隔监视体验,请选中“基本”指标对应的复选框。

    Azure SQL 数据库诊断配置的截图。

  9. 选择“保存” 。

  10. 针对要监视的每个数据库重复上述步骤。

提示

针对要监视的每个单一数据库和共用数据库重复上述步骤。

Azure SQL 托管实例中的实例

可将托管实例资源设置为收集以下诊断遥测数据:

资源 监控遥测
托管实例 ResourceUsageStats 包含 vCore 计数、平均 CPU 百分比、IO 请求、读取和写入的字节数、保留存储空间以及已用存储空间。

若要为托管实例和实例数据库配置诊断遥测数据的流式传输,需要分别配置每一项:

  • 为托管实例启用诊断遥测数据的流式传输
  • 为每个数据库实例启用诊断遥测流

托管实例容器具有其自己的遥测数据,与每个实例数据库的遥测数据分开。

若要为托管实例资源启用诊断遥测数据的流式传输,请执行以下步骤:

  1. 在 Azure 门户中转到托管实例资源。

  2. 选择“诊断设置”。

  3. 选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置

    为托管实例启用诊断的屏幕截图。

  4. 输入设置名称供自己参考。

  5. 选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。

  6. 对于 Log Analytics,请选择“配置”,并通过选择“+创建新工作区”来创建新工作区;或者使用现有的工作区。

  7. 选中用于实例诊断数据收集的复选框:ResourceUsageStats

    为托管实例配置诊断的屏幕截图。

  8. 选择“保存” 。

  9. 另外,请按照下一部分所述的步骤,为您要监视的托管实例中的每个实例数据库配置连续的诊断遥测流。

重要

除了为托管实例配置诊断遥测数据,还需为每个实例数据库配置诊断遥测数据。

Azure SQL 托管实例中的数据库

可将实例数据库资源设置为收集以下诊断遥测数据:

资源 监控遥测
实例数据库 查询存储运行时统计信息查询存储等待统计信息包含数据库的查询存储数据。 SQLInsights 包含数据库的智能见解数据。 错误包含此数据库的错误数据。

若要为实例数据库启用诊断遥测数据的流式传输,请执行以下步骤:

  1. 转到托管实例中的实例数据库资源。

  2. 选择“诊断设置”。

  3. 选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置

    • 最多可以创建三个并行连接用于流式传输诊断遥测数据。
    • 选择“+添加诊断设置”,配置为将诊断数据并行流式传输到多个资源。

    为实例数据库启用诊断的屏幕截图。

  4. 输入设置名称供自己参考。

  5. 选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。

  6. 选中数据库诊断遥测对应的复选框:“SQLInsights”、“QueryStoreRuntimeStatistics”、“QueryStoreWaitStatistics”和“Errors”。 配置实例数据库的诊断的屏幕截图。

  7. 选择“保存” 。

  8. 针对要监视的每个实例数据库重复上述步骤。

提示

针对要监视的每个实例数据库重复上述步骤。

流式传输到事件中心

在 Azure 门户中使用内置的“流式传输到事件中心”选项可将 Azure SQL 数据库和 Azure SQL 托管实例指标和资源日志流式传输到事件中心。 还可以通过 PowerShell cmdlet、Azure CLI 或 Azure Monitor REST API 使用诊断设置来启用服务总线规则 ID。 确保事件中心与数据库和服务器位于同一区域。

如何处理事件中心内的指标和资源日志

将选定的数据流式传输到事件中心后,就离启动高级监视方案更进一步了。 事件中心充当事件处理流程的入口。 将数据收集到事件中心后,实时分析提供程序或存储适配器可以转换和存储它。 事件中心将事件流的生成从这些事件的使用中分离出来。 通过这种方式,事件使用者可以访问自己的计划中的事件。 有关事件中心的详细信息,请参阅:

您可以使用事件中心中的流式指标来:

  • 将日志发送到第三方日志记录和遥测渠道

    使用事件中心流式传输,可将指标和资源日志引入到不同的第三方监视和日志分析解决方案。

  • 生成自定义遥测和日志记录平台

    你是否已拥有自定义生成的遥测平台,或者是否正在考虑生成一个遥测平台? 可以利用事件中心高度可缩放的发布-订阅功能灵活引入指标和资源日志。 有关详细信息,请参阅 Azure 事件中心

流式传输到 Azure 存储

使用 Azure 门户中内置的“存档到存储帐户”选项,可以在 Azure 存储中存储指标和资源日志。 此外,还可以通过 PowerShell cmdlet、Azure CLI 或 Azure Monitor REST API 使用诊断设置来启用存储。

存储帐户中指标和资源日志的架构

设置指标和资源日志收集后,当第一行数据可用时,将在所选的存储帐户中创建一个存储容器。 这些 Blob 的结构为:

insights-{metrics|logs}-{category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/ RESOURCEGROUPS/{resource group name}/PROVIDERS/Microsoft.SQL/servers/{resource_server}/ databases/{database_name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

或者使用更简单的形式:

insights-{metrics|logs}-{category name}/resourceId=/{resource Id}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

例如,基本指标的 blob 名称可能是:

insights-metrics-minute/resourceId=/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.SQL/ servers/Server1/databases/database1/y=2016/m=08/d=22/h=18/m=00/PT1H.json

如果存储弹性池中的数据,Blob 名称类似于:

insights-{metrics|logs}-{category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/ RESOURCEGROUPS/{resource group name}/PROVIDERS/Microsoft.SQL/servers/{resource_server}/ elasticPools/{elastic_pool_name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

数据保留策略和定价

如果选择事件中心或存储帐户,可以指定保留策略。 此策略删除早于选定时间段的数据。 如果指定 Log analytics,保留策略将取决于所选的定价层。 在这种情况下,提供的免费数据引入单位每月可免费监视多个数据库。 消耗的诊断遥测量如超过免费单位,可能会导致费用产生。

重要

与空闲数据相比,工作负荷较重的活动数据库越多,引入的数据就越多。 有关详细信息,请参阅 Log Analytics 定价

如果使用 Azure SQL Analytics,可以通过在 Azure SQL Analytics 的导航菜单上选择 OMS 工作区 ,然后选择 “使用情况 ”和“ 估计成本”来监视数据引入消耗。

可用的指标和日志

本部分介绍可用于单一数据库、共用数据库、弹性池、托管实例和实例数据库的监视遥测数据。 可以使用 SQL Analytics 内部收集的监视遥测数据进行自己的自定义分析和应用程序开发,方法是使用 Azure Monitor 日志查询 语言。

基本指标

请参阅下表来详细了解按资源列出的基本指标。

注意

基本指标选项以前称为“所有指标”。 更改仅适用于命名。 监视的指标没有变化。 此更改允许将来引入其他指标类别。

弹性池的基本指标

资源 Metrics
弹性池 eDTU 百分比、已用 eDTU、eDTU 限制、CPU 百分比、物理数据读取百分比、日志写入百分比、会话百分比、工作线程百分比、存储、存储百分比、存储限制、XTP存储百分比

单一数据库和共用数据库的基本指标

资源 Metrics
单一数据库和共用数据库 DTU 百分比、已用 DTU、DTU 限制、CPU 百分比、物理数据读取百分比、日志写入百分比、成功/失败/被防火墙阻止的连接数、会话百分比、工作者百分比、存储、存储百分比、XTP 存储百分比和死锁

高级指标

请参阅下表,详细了解高级指标。

Metric 指标显示名称 说明
sql_instance_cpu_percent 1 SQL 实例 CPU 百分比 所有用户和系统工作负载的 CPU 使用率(按操作系统度量)
sql_instance_memory_percent 1 SQL 实例内存百分比 数据库引擎实例的内存使用情况(按操作系统测量)
tempdb_data_size 2 tempdb 数据文件大小 (KB) tempdb 数据文件大小 (KB)。
tempdb_log_size 2 tempdb 日志文件大小 (KB) tempdb 日志文件大小 (KB)。
tempdb_log_used_percent 2 tempdb 已用日志百分比 tempdb 日志使用百分比。

1 此指标可用于这样的数据库:使用具有 2 vCore 或更多 vCore 的 vCore 购买模型,或使用具有 200 DTU 或更多 DTU 的基于 DTU 的购买模型。

2 此指标适用于以下数据库:使用 2 个 vCores 及以上的 vCore 购买模型,或使用 200 DTU 及以上的 DTU 基于模型的数据库。 此指标当前不适用于 Synapse Analytics SQL 池。

注意

基本指标和高级指标可能都不适用于处于非活动状态 7 天或更长时间的数据库。

基本日志

下表记录了可用于所有日志的遥测详细信息。 有关详细信息,请参阅支持的诊断遥测

托管实例的资源使用情况统计信息

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: ResourceUsageStats
Resource 资源名称
ResourceType 资源类型的名称。 总是: MANAGEDINSTANCES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 托管实例的名称
ResourceId 资源 URI
SKU_s SQL 托管实例产品 SKU
virtual_core_count_s 可用 vCore 的数目
avg_cpu_percent_s CPU 平均百分比
reserved_storage_mb_s 托管实例上的保留存储容量
storage_space_used_mb_s 托管实例上的已用存储
io_requests_s IOPS 计数
io_bytes_read_s 已读取的 IOPS 字节数
io_bytes_written_s 已写入的 IOPS 字节数

查询存储的运行时统计信息

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: QueryStoreRuntimeStatistics
OperationName 操作的名称。 总是: QueryStoreRuntimeStatisticsEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
query_hash_s 1 查询哈希
query_plan_hash_s 1 查询计划哈希
statement_sql_handle_s 语句 SQL 句柄
interval_start_time_d 2 统计间隔起始的内部标识符。
interval_end_time_d 2 统计信息间隔结束的内部标识符。
logical_io_writes_d 逻辑 IO 写入总次数
max_logical_io_writes_d 每次执行的最大逻辑 IO 写入次数
physical_io_reads_d 物理 IO 读取总次数
max_physical_io_reads_d 每次执行逻辑 IO 读取的最大次数
logical_io_reads_d 逻辑 IO 读取总次数
max_logical_io_reads_d 每次执行操作的逻辑 IO 读取最大次数
execution_type_d 执行类型
count_executions_d 执行查询的次数
cpu_time_d 查询使用的总 CPU 时间(以微秒为单位)
max_cpu_time_d 单个执行以微秒为单位消耗的最大 CPU 时间
dop_d 并行度总和
max_dop_d 单次执行所用的最大并行度
rowcount_d 返回的总行数
max_rowcount_d 单个执行中返回的最大行数
query_max_used_memory_d 已使用的内存总量(以 KB 为单位)
max_query_max_used_memory_d 单个执行使用的最大内存量(以 KB 为单位)
duration_d 总执行时间(以微秒为单位)
max_duration_d 单个执行的最大执行时间
num_physical_io_reads_d 总物理读取次数
max_num_physical_io_reads_d 每次执行最大物理读取次数
log_bytes_used_d 使用的日志字节总量
max_log_bytes_used_d 每次执行使用的日志字节最大数量
query_id_d 查询存储中的查询 ID
plan_id_d 查询存储中计划的 ID

1 若要在查询存储中查找匹配的查询和查询计划,请参阅本文稍后 在查询存储中查找匹配的查询和查询计划

2 若要将此值转换为可使用的时间戳,请参阅本文稍后 将间隔开始和结束时间转换为日期/时间值

有关详细信息,请参阅 sys.query_store_runtime_stats

查询存储等待统计信息

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: QueryStoreWaitStatistics
OperationName 操作的名称。 总是: QueryStoreWaitStatisticsEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
wait_category_s 等待的类别
is_parameterizable_s 查询是否可以参数化
statement_type_s 语句的类型
statement_key_hash_s 声明密钥哈希
exec_type_d 执行类型
total_query_wait_time_ms_d 查询特定等待类别的总等待时间
max_query_wait_time_ms_d 单个执行中针对具体等待类别的查询的最大等待时间
query_param_type_d 0
query_hash_s 1 查询存储中的查询哈希
query_plan_hash_s 1 在查询存储中查询计划哈希值。
statement_sql_handle_s 查询存储中的语句句柄
interval_start_time_d 2 统计间隔起始的内部标识符。
interval_end_time_d 2 统计信息间隔结束的内部标识符。
count_executions_d 执行查询的次数
query_id_d 查询存储中查询的 ID
plan_id_d 查询存储中计划的 ID

1 若要在查询存储中查找匹配的查询和查询计划,请参阅本文稍后 在查询存储中查找匹配的查询和查询计划

2 若要将此值转换为可使用的时间戳,请参阅本文稍后 将间隔开始和结束时间转换为日期/时间值

有关详细信息,请参阅 sys.query_store_wait_stats

错误数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: Errors
OperationName 操作的名称。 总是: ErrorEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
Message 纯文本格式的错误消息
user_defined_b 是否是用户定义位错误
error_number_d 错误代码
Severity 错误的严重性
state_d 错误状态
query_hash_s 1 失败查询的查询哈希(如果有)
query_plan_hash_s 1 失败查询的查询计划哈希(如果有)

1 若要在查询存储中查找匹配的查询和查询计划,请参阅本文稍后 在查询存储中查找匹配的查询和查询计划

有关详细信息,请参阅 数据库引擎事件和错误

数据库等待时间统计数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: DatabaseWaitStatistics
OperationName 操作的名称。 总是: DatabaseWaitStatisticsEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
wait_type_s 等待类型的名称
start_utc_date_t [UTC] 测量周期开始时间
end_utc_date_t [UTC] 测量周期结束时间
delta_max_wait_time_ms_d 每次执行最大等待时间
delta_signal_wait_time_ms_d 总信号等待时间
delta_wait_time_ms_d 期间内的总等待时间
delta_waiting_tasks_count_d 等待任务数

有关数据库等待统计信息的详细信息,请参阅 sys.dm_os_wait_stats

超时数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: Timeouts
OperationName 操作的名称。 总是: TimeoutEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
error_state_d 与查询超时值关联的数值状态值(attention 事件)
query_hash_s 1 查询哈希(如果有)
query_plan_hash_s 1 查询计划哈希(如果有)

1 若要在查询存储中查找匹配的查询和查询计划,请参阅本文稍后 在查询存储中查找匹配的查询和查询计划

阻塞数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: Blocks
OperationName 操作的名称。 总是: BlockEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
lock_mode_s 查询所使用的锁模式
resource_owner_type_s 锁的所有者
blocked_process_filtered_s 阻塞进程报告 XML
duration_d 锁定持续时间(以毫秒为单位)

死锁数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: Deadlocks
OperationName 操作的名称。 总是: DeadlockEvent
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
deadlock_xml_s 死锁报告 XML

自动调优数据集

属性 说明
TenantId 租户 ID
SourceSystem 总是: Azure
TimeGenerated [UTC] 记录日志时的时间戳
Type 总是: AzureDiagnostics
ResourceProvider 资源提供者的名称。 总是: MICROSOFT.SQL
Category 类别的名称。 总是: AutomaticTuning
Resource 资源名称
ResourceType 资源类型的名称。 总是: SERVERS/DATABASES
SubscriptionId 数据库的订阅 GUID
ResourceGroup 数据库的资源组名称
LogicalServerName_s 数据库的服务器名称
LogicalDatabaseName_s 数据库的名称
ElasticPoolName_s 数据库的弹性池(如果有)名称
DatabaseName_s 数据库的名称
ResourceId 资源 URI
RecommendationHash_s 自动优化建议的唯一哈希值
OptionName_s 自动调优操作
Schema_s 数据库架构
Table_s 受影响的表
IndexName_s 索引名称
IndexColumns_s 列名称
IncludedColumns_s 包含的列
EstimatedImpact_s 自动调优建议 JSON 的预估影响
Event_s 自动调优事件的类型
Timestamp_t 上次更新时间戳

智能见解数据集

有关详细信息,请参阅 使用 Azure SQL 数据库和 Azure SQL 托管实例性能问题的 Intelligent Insights 性能诊断日志

例子

答: 将间隔开始和结束时间转换为日期/时间值

以下 Kusto 表达式将 interval_start_time_dinterval_end_time_d 数据集中的 列从内部值转换为 datetime 值。

| extend interval_start_time_date = interval_start_time_d / 4294967296,
         interval_end_time_date = interval_end_time_d / 4294967296
| extend interval_start_time_time = interval_start_time_d - 4294967296 * interval_start_time_date,
         interval_end_time_time = interval_end_time_d - 4294967296 * interval_end_time_date
| project interval_start_date_time = datetime(1900-1-1) + time(1d) * interval_start_time_date + time(1s) * (interval_start_time_time / 300.0),
          interval_end_date_time = datetime(1900-1-1) + time(1d) * interval_end_time_date + time(1s) * (interval_end_time_time / 300.0)

B. 在查询存储中查找匹配的查询和查询计划

在查询存储query_hash_squery_plan_hash_s统计信息及错误超时数据集中,属性显示为数值。

若要在 查询存储中查找匹配的查询和查询计划,请使用以下 T-SQL 表达式。 它将数值哈希值转换为 用于sys.query_store_querysys.query_store_plan的二进制哈希值。

SELECT CAST(CAST(<hash_value> as BIGINT) AS BINARY(8));

<hash_value> 替换为实际的 query_hash_squery_plan_hash_s 数值。

后续步骤

若要了解如何启用日志记录并了解各种 Azure 服务支持的指标和日志类别,请参阅:

若要了解事件中心,请阅读: