sys.dm_exec_background_job_queue_stats
对于每个为异步(后台)执行而提交的查询处理器作业,相应地返回一行,以提供聚合统计信息。
列名 |
数据类型 |
说明 |
---|---|---|
queue_max_len |
int |
最大队列长度。 |
enqueued_count |
int |
成功投递到队列的请求数。 |
started_count |
int |
已经开始执行的请求数。 |
ended_count |
int |
最终成功或失败的请求数。 |
failed_lock_count |
int |
由于锁争用或死锁而失败的请求数。 |
failed_other_count |
int |
由于其他原因而失败的请求数。 |
failed_giveup_count |
int |
由于已达到重试限制而失败的请求数。 |
enqueue_failed_full_count |
int |
由于队列已满而失败的排队尝试的数字。 |
enqueue_failed_duplicate_count |
int |
复制排队尝试的数字。 |
elapsed_avg_ms |
int |
请求的平均占用时间(毫秒)。 |
elapsed_max_ms |
int |
最长请求的占用时间(毫秒)。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
示例
A. 确定失败的后台作业的百分比。
以下示例针对所有已执行查询返回失败的后台作业的百分比。
SELECT
CASE ended_count WHEN 0
THEN 'No jobs ended'
ELSE CAST((failed_lock_count + failed_giveup_count + failed_other_count) / CAST(ended_count AS float) * 100 AS varchar(20))
END AS [Percent Failed]
FROM sys.dm_exec_background_job_queue_stats;
GO
B. 确定失败的排队尝试的百分比。
以下示例针对所有已执行查询返回失败的排队尝试的百分比。
SELECT
CASE enqueued_count WHEN 0
THEN 'No jobs posted'
ELSE CAST((enqueue_failed_full_count + enqueue_failed_duplicate_count) / CAST(enqueued_count AS float) * 100 AS varchar(20))
END AS [Percent Enqueue Failed]
FROM sys.dm_exec_background_job_queue_stats;
GO