适用于: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 托管实例中,无法为 系统数据库 (例如 master、 msdb、 model资源和 tempdb 数据库)配置诊断设置。
流式数据导出的目标
可以将此诊断遥测流式传输到以下 Azure 资源之一进行分析。
Log Analytics 工作区:
将数据流式传输到 Log Analytics 工作区。
-
将数据流式传输到 Azure 事件中心可提供以下功能:
- 将日志流式传输到第三方日志记录和遥测系统:将所有指标和资源日志流式传输到单个事件中心,以将日志数据通过管道传输到第三方 SIEM 或日志分析工具。
- 生成自定义遥测和日志记录平台:可利用 Azure 事件中心的高度可扩展的发布-订阅特性灵活地将指标和资源日志引入自定义遥测平台。 有关详细信息,请参阅 Azure 事件中心。
Azure 存储 :
通过将数据流式传输到 Azure 存储,可以存档大量的诊断遥测数据,以节省前两个流式处理选项的成本的一小部分。
可以使用流式传输到这些目标之一的诊断遥测来衡量资源利用和查询执行统计信息,从而轻松监控性能。
启用和配置诊断遥测数据的流式导出
可使用以下方法之一来启用和管理指标与诊断遥测日志记录:
- Azure 门户
- PowerShell
- Azure CLI
- Azure Monitor REST API
- Azure Resource Manager 模板
注意
要启用安全遥测的审核日志流式传输,请参阅为 Azure SQL 数据库和 Azure Synapse Analytics 设置审核以及在 Azure Log Analytics 和 Azure Event Hubs 中的 SQL 审核日志。
配置诊断遥测数据的流式导出
使用 Azure 门户中的 “诊断设置” 菜单启用和配置诊断遥测的流式传输。 此外,还可以使用 PowerShell、Azure CLI、REST API 和资源管理器模板来配置诊断遥测数据的流式传输。 可设置以下目标来流式传输诊断遥测数据:Azure 存储、Azure 事件中心和 Azure Monitor 日志。
重要
默认情况下,不会启用诊断遥测的流式导出。
选择以下选项卡之一,获取有关在 Azure 门户中配置诊断遥测数据的流式导出的分步指导,以及用于在 PowerShell 和 Azure CLI 中实现相同目的的脚本。
Azure SQL 数据库中的弹性池
可将弹性池资源设置为收集以下诊断遥测数据:
| 资源 | 监控遥测数据 |
|---|---|
| 弹性池 | 基本指标包含 eDTU/CPU 百分比、eDTU/CPU 限制、物理数据读取百分比、日志写入百分比、会话百分比、辅助角色百分比、存储、存储百分比、存储限制,以及 XTP 存储百分比。 |
要为弹性池和共用数据库配置诊断遥测的数据流,需要单独配置每个资源:
- 为弹性池启用诊断遥测数据的流式传输
- 为弹性池中的每个数据库启用诊断遥测流式传输
弹性池容器具有其独立的遥测数据,与每个独立汇聚数据库的遥测数据是分开的。
若要为弹性池资源启用诊断遥测流,请执行以下步骤:
在 Azure 门户中转到弹性池资源。
选择“诊断设置”。
选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置
输入设置名称供自己参考。
选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。
对于 Log Analytics,请选择“配置”,并通过选择“+创建新工作区”来创建新工作区;或者选择现有的工作区。
选中弹性池诊断遥测的复选框:基本指标。
选择“保存” 。
另外,请为弹性池中需要监视的每个数据库配置诊断遥测数据的实时流,按照下一部分所述的步骤进行操作。
重要
除了为弹性池配置诊断遥测数据,还需为弹性池中的每个数据库配置诊断遥测数据。
Azure SQL 数据库中的数据库
可将数据库资源设置为收集以下诊断遥测数据:
| 资源 | 监控遥测 |
|---|---|
| 单一数据库或共用数据库 | 基本指标 包括 DTU 百分比、DTU 已用、DTU 限制、CPU 百分比、物理数据读取百分比、日志写入百分比、防火墙连接成功/失败/阻止、会话百分比、辅助角色百分比、存储百分比、XTP 存储百分比和死锁。 |
若要为单一数据库或共用数据库启用诊断遥测数据的流式传输,请执行以下步骤:
转到 Azure SQL 数据库资源。
选择“诊断设置”。
选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置 最多可以创建三个并行连接用于流式传输诊断遥测数据。
选择“添加诊断设置”,以便配置将诊断数据并行流式传输到多个资源。
输入设置名称供自己参考。
选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。
对于标准的基于事件的监视体验,请选中数据库诊断日志遥测对应的以下复选框:“SQLInsights”、“AutomaticTuning”、“QueryStoreRuntimeStatistics”、“QueryStoreWaitStatistics”、“Errors”、“DatabaseWaitStatistics”、“Timeouts”、“Blocks”和“Deadlocks”。
对于高级的一分钟间隔监视体验,请选中“基本”指标对应的复选框。
选择“保存” 。
针对要监视的每个数据库重复上述步骤。
提示
针对要监视的每个单一数据库和共用数据库重复上述步骤。
Azure SQL 托管实例中的实例
可将托管实例资源设置为收集以下诊断遥测数据:
| 资源 | 监控遥测 |
|---|---|
| 托管实例 | ResourceUsageStats 包含 vCore 计数、平均 CPU 百分比、IO 请求、读取和写入的字节数、保留存储空间以及已用存储空间。 |
若要为托管实例和实例数据库配置诊断遥测数据的流式传输,需要分别配置每一项:
- 为托管实例启用诊断遥测数据的流式传输
- 为每个数据库实例启用诊断遥测流
托管实例容器具有其自己的遥测数据,与每个实例数据库的遥测数据分开。
若要为托管实例资源启用诊断遥测数据的流式传输,请执行以下步骤:
在 Azure 门户中转到托管实例资源。
选择“诊断设置”。
选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置
输入设置名称供自己参考。
选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。
对于 Log Analytics,请选择“配置”,并通过选择“+创建新工作区”来创建新工作区;或者使用现有的工作区。
选中用于实例诊断数据收集的复选框:ResourceUsageStats。
选择“保存” 。
另外,请按照下一部分所述的步骤,为您要监视的托管实例中的每个实例数据库配置连续的诊断遥测流。
重要
除了为托管实例配置诊断遥测数据,还需为每个实例数据库配置诊断遥测数据。
Azure SQL 托管实例中的数据库
可将实例数据库资源设置为收集以下诊断遥测数据:
| 资源 | 监控遥测 |
|---|---|
| 实例数据库 | 查询存储运行时统计信息和查询存储等待统计信息包含数据库的查询存储数据。 SQLInsights 包含数据库的智能见解数据。 错误包含此数据库的错误数据。 |
若要为实例数据库启用诊断遥测数据的流式传输,请执行以下步骤:
转到托管实例中的实例数据库资源。
选择“诊断设置”。
选择“启用诊断”(如果不存在以前的设置),或选择“编辑设置”来编辑以前的设置
- 最多可以创建三个并行连接用于流式传输诊断遥测数据。
- 选择“+添加诊断设置”,配置为将诊断数据并行流式传输到多个资源。
输入设置名称供自己参考。
选择诊断数据要流式传输到的目标资源:“存档到存储帐户”、“流式传输到事件中心”或“发送到 Log Analytics”。
选中数据库诊断遥测对应的复选框:“SQLInsights”、“QueryStoreRuntimeStatistics”、“QueryStoreWaitStatistics”和“Errors”。
选择“保存” 。
针对要监视的每个实例数据库重复上述步骤。
提示
针对要监视的每个实例数据库重复上述步骤。
流式传输到事件中心
在 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_d 和 interval_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_s和query_plan_hash_s统计信息及错误和超时数据集中,和属性显示为数值。
若要在 查询存储中查找匹配的查询和查询计划,请使用以下 T-SQL 表达式。 它将数值哈希值转换为 用于sys.query_store_query 和 sys.query_store_plan的二进制哈希值。
SELECT CAST(CAST(<hash_value> as BIGINT) AS BINARY(8));
将 <hash_value> 替换为实际的 query_hash_s 或 query_plan_hash_s 数值。
后续步骤
若要了解如何启用日志记录并了解各种 Azure 服务支持的指标和日志类别,请参阅:
若要了解事件中心,请阅读: