次の方法で共有


sys.dm_exec_background_job_queue_stats (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

非同期 (バックグラウンド) 実行のために送信された各クエリ プロセッサ ジョブの集計統計を提供する行を返します。

Note

これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_exec_background_job_queue_statsという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

列名 データ型 説明
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 最も長い要求の経過時間 (ミリ秒)。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

解説

このビューは、非同期更新統計ジョブについてのみ情報を返します。 非同期更新統計の詳細については、「 Statistics」を参照してください。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database の BasicS0S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

SQL Server 2022 以降でのアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE 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 + enqueue_failed_full_count + enqueue_failed_duplicate_count AS float) * 100 AS varchar(20))   
        END AS [Percent Enqueue Failed]  
FROM sys.dm_exec_background_job_queue_stats;  
GO  

参照

動的管理ビューと動的管理関数 (Transact-SQL)
実行関連の動的管理ビューと関数 (Transact-SQL)