You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Azure SQL Database上次自动暂停的时间及持续时长?

查看Azure SQL Database无服务器实例的自动暂停时间及时长

先解决你遇到的两个问题

1. Azure CLI报错ResourceGroupNotFound

该错误大概率是当前CLI上下文的订阅不包含目标资源组,解决步骤:

  • 检查当前订阅:
    az account show
    
  • 切换到资源组所在的订阅:
    az account set --subscription "你的订阅名称或ID"
    
  • 也可以在查询命令中显式指定订阅:
    az sql db show --subscription <订阅ID> -g $resourceGroupName -s $serverName -n $databaseName --query "[status, automaticPauseTime]"
    
    说明:automaticPauseTime仅在数据库当前处于暂停状态时返回具体时间,若数据库正在运行,该字段为null。

2. T-SQL查询sys.dm_exec_sessions结果不符的原因

  • 你连接的是master库,当前会话的database_id指向master,而非目标无服务器数据库,所以查询条件database_id = DB_ID(@databaseName)无法匹配当前连接。
  • sys.dm_exec_sessions仅保留活跃/近期会话数据,数据库暂停重启后会清空历史会话记录,无法用于追踪暂停事件。

正确查询自动暂停时间及时长的方法

方法1:通过T-SQL查询暂停/恢复事件(精确时间点)

连接到master库,执行以下SQL查询昨日的暂停与恢复事件,通过事件时间差计算暂停时长:

USE master;
GO

DECLARE @targetDb NVARCHAR(128) = '你的数据库名称';

SELECT
    event_time AS 事件时间,
    event_type AS 事件类型,
    description AS 事件描述
FROM sys.event_log
WHERE
    database_name = @targetDb
    AND event_type IN ('Database Paused', 'Database Resumed')
    AND event_time >= DATEADD(DAY, -1, GETUTCDATE()) -- 筛选昨日至今的事件
ORDER BY event_time DESC;

说明:sys.event_log保留7天内的事件记录,你可以通过相邻的“Database Paused”和“Database Resumed”事件时间差,计算单次暂停的持续时长。

方法2:通过Azure CLI查询昨日总暂停时长

使用监控指标查询昨日数据库的累计暂停时长(单位:秒):

az monitor metrics query \
    --resource "/subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Sql/servers/<服务器名>/databases/<数据库名>" \
    --metric "PausedDuration" \
    --aggregation "Total" \
    --start-time "$(date -d 'yesterday' +%Y-%m-%dT00:00:00Z)" \
    --end-time "$(date -d 'today' +%Y-%m-%dT00:00:00Z)"

方法3:Azure Portal可视化查看

  1. 进入目标SQL数据库的门户页面,点击左侧菜单的监控 > 指标
  2. 指标选择“暂停时长”,时间范围设置为“昨天”,即可查看当日累计暂停时长
  3. 点击左侧菜单的活动日志,筛选操作类型为“暂停数据库”和“恢复数据库”,可查看具体事件时间点

内容的提问来源于stack exchange,提问作者Francesco Mantovani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:03:15