sys.dm_exec_requests (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure Synapse Analytics

で実行されている各要求に関する情報を返し SQL Server ます。 要求の詳細については、「 スレッドおよびタスクアーキテクチャガイド」を参照してください。

注意

またはの専用 SQL プールからこれを呼び出すに Azure Synapse Analytics は Analytics Platform System (PDW) 、「 sys.dm_pdw_exec_requests (transact-sql SQL)」を参照してください。 サーバーレス SQL プールの使用 sys.dm_exec_requests

列名 データ型 説明
session_id smallint この要求が関連付けられているセッションの ID。 NULL 値は許可されません。
request_id int 要求の ID。 セッションのコンテキスト内で一意です。 NULL 値は許可されません。
start_time datetime 要求が到着したときのタイムスタンプ。 NULL 値は許可されません。
status nvarchar(30) 要求の状態。 DLL は、次のいずれかの場所に置くことができます。

背景
実行中
実行可能
休止中
Suspended

NULL 値は許可されません。
command nvarchar(32) 現在処理中のコマンドの種類。 一般的なコマンドの種類には次のものがあります。

SELECT
INSERT
UPDATE
DELETE
BACKUP LOG
BACKUP DATABASE
DBCC
FOR

要求のテキストを取得するには、対応する sql_handle と共に、要求に対して sys.dm_exec_sql_text を使用します。 内部システムプロセスは、実行するタスクの種類に基づいて、コマンドを設定します。 タスクには次のものが含まれます。

LOCK MONITOR
CHECKPOINTLAZY
WRITER

NULL 値は許可されません。
sql_handle varbinary(64) クエリが含まれているバッチまたはストアドプロシージャを一意に識別するトークンです。 NULL 値が許可されます。
statement_start_offset int 現在実行中のバッチまたは保存されたオブジェクトに対して現在実行中のステートメントの開始位置を、0で始まるバイト単位で示します。 、、および動的管理関数と共に使用して、 sql_handle statement_end_offset sys.dm_exec_sql_text 要求に対して現在実行中のステートメントを取得できます。 NULL 値が許可されます。
statement_end_offset int 現在実行中のバッチまたは保存されたオブジェクトに対して現在実行中のステートメントの終了位置を、0から始まるバイト単位で示します。 、、および動的管理関数と共に使用して、 sql_handle statement_start_offset sys.dm_exec_sql_text 要求に対して現在実行中のステートメントを取得できます。 NULL 値が許可されます。
plan_handle varbinary(64) 現在実行中のバッチのクエリ実行プランを一意に識別するトークンです。 NULL 値が許可されます。
database_id smallint 要求の実行対象データベースの ID。 NULL 値は許可されません。
user_id int 要求を送信したユーザーの ID。 NULL 値は許可されません。
connection_id uniqueidentifier 要求を受信した接続の ID。 NULL 値が許可されます。
blocking_session_id smallint 要求をブロックしているセッションの ID。 この列が NULL または0に等しい場合は、要求がブロックされていないか、ブロックしているセッションのセッション情報が使用できない (または識別できません)。

-2 = ブロックしているリソースは、孤立した分散トランザクションが所有しています。

-3 = ブロックしているリソースは、遅延復旧トランザクションが所有しています。

-4 = 内部ラッチの状態遷移のため、ブロックしているラッチの所有者のセッション ID を現時点で特定できませんでした。

-5 = ブロッキングラッチ所有者のセッション ID を特定できませんでした。このラッチ型 (SH ラッチなど) で追跡されていません。
wait_type nvarchar(60) 要求が現在ブロックされている場合の待機の種類。 NULL 値が許可されます。

待機の種類の詳細については、「 sys.dm_os_wait_stats (の「transact-sql SQL)」を参照してください。
wait_time int 要求が現在ブロックされている場合の現時点での待機時間 (ミリ秒単位)。 NULL 値は許可されません。
last_wait_type nvarchar(60) 要求がブロックされていた場合の最後の待機の種類。 NULL 値は許可されません。
wait_resource nvarchar (256) 要求が現在ブロックされている場合の現在待機中のリソース。 NULL 値は許可されません。
open_transaction_count int この要求に対して開いているトランザクションの数。 NULL 値は許可されません。
open_resultset_count int この要求に対して開いている結果セットの数。 NULL 値は許可されません。
transaction_id bigint 要求が実行されるトランザクションの ID。 NULL 値は許可されません。
context_info varbinary (128) セッションの CONTEXT_INFO 値。 NULL 値が許可されます。
percent_complete real 次のコマンドで完了した作業の割合。

ALTER INDEX REORGANIZE
ALTER DATABASE の AUTO_SHRINK オプション
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE の暗号化

NULL 値は許可されません。
estimated_completion_time bigint 内部でのみ使用されます。 NULL 値は許可されません。
cpu_time int 要求で使用される CPU 時間 (ミリ秒単位)。 NULL 値は許可されません。
total_elapsed_time int 要求を受信してから経過した総時間 (ミリ秒単位)。 NULL 値は許可されません。
scheduler_id int この要求のスケジュールを設定しているスケジューラの ID。 NULL 値は許可されません。
task_address varbinary (8) 要求に関連付けられたタスクに割り当てられるメモリ アドレス。 NULL 値が許可されます。
読み取り bigint 要求で実行された読み取りの数。 NULL 値は許可されません。
書き込み bigint 要求で実行された書き込みの数。 NULL 値は許可されません。
logical_reads bigint 要求で実行された論理読み取りの数。 NULL 値は許可されません。
text_size int 要求の TEXTSIZE 設定。 NULL 値は許可されません。
language nvarchar(128) 要求の言語設定。 NULL 値が許可されます。
date_format nvarchar (3) 要求の DATEFORMAT 設定。 NULL 値が許可されます。
date_first smallint 要求の DATEFIRST 設定。 NULL 値は許可されません。
quoted_identifier bit 1 = 要求に対して QUOTED_IDENTIFIER が ON です。 それ以外の場合は0になります。

NULL 値は許可されません。
arithabort bit 1 = 要求に対して ARITHABORT 設定が ON です。 それ以外の場合は0になります。

NULL 値は許可されません。
ansi_null_dflt_on bit 1 = 要求に対して ANSI_NULL_DFLT_ON 設定が ON です。 それ以外の場合は 0 です。

NULL 値は許可されません。
ansi_defaults bit 1 = 要求に対して ANSI_DEFAULTS 設定が ON です。 それ以外の場合は 0 です。

NULL 値は許可されません。
ansi_warnings bit 1 = 要求に対して ANSI_WARNINGS 設定が ON です。 それ以外の場合は 0 です。

NULL 値は許可されません。
ansi_padding bit 1 = 要求に対して ANSI_PADDING 設定が ON です。

それ以外の場合は 0 です。

NULL 値は許可されません。
ansi_nulls bit 1 = 要求に対して ANSI_NULLS 設定が ON です。 それ以外の場合は 0 です。

NULL 値は許可されません。
concat_null_yields_null bit 1 = 要求に対して CONCAT_NULL_YIELDS_NULL 設定が ON です。 それ以外の場合は 0 です。

NULL 値は許可されません。
transaction_isolation_level smallint この要求に対するトランザクションの作成に使用された分離レベル。 NULL 値は許可されません。
0 = Unspecified
1 = ReadUncomitted
2 = ReadCommitted
3 = Repeatable
4 = Serializable
5 = Snapshot
lock_timeout int 要求のロック タイムアウトまでの時間 (ミリ秒単位)。 NULL 値は許可されません。
deadlock_priority int 要求の DEADLOCK_PRIORITY 設定。 NULL 値は許可されません。
row_count bigint この要求によってクライアントに返された行の数。 NULL 値は許可されません。
prev_error int 要求の実行中に発生した最後のエラー。 NULL 値は許可されません。
nest_level int 要求で実行されているコードの現在の入れ子レベル。 NULL 値は許可されません。
granted_query_memory int 要求でのクエリの実行に割り当てられたページ数。 NULL 値は許可されません。
executing_managed_code bit 特定の要求で、ルーチン、データ型、トリガーなどの共通言語ランタイム オブジェクトが現在実行されているかどうかを示します。 共通言語ランタイム オブジェクトが共通言語ランタイム内から Transact-SQL を実行した場合でも、共通言語ランタイム オブジェクトがスタックにある間は、このパラメーターが必ず設定されます。 NULL 値は許可されません。
group_id int このクエリが属するワークロード グループの ID。 NULL 値は許可されません。
query_hash binary(8) クエリで計算され、同様のロジックを持つクエリを識別するために使用される、バイナリのハッシュ値です。 クエリ ハッシュを使用して、リテラル値だけが異なるクエリの全体的なリソース使用率を決定できます。
query_plan_hash binary(8) クエリ実行プランで計算され、同様のクエリ実行プランを識別するために使用される、バイナリのハッシュ値です。 クエリ プラン ハッシュを使用して、同様の実行プランを持つクエリの累積コストを確認できます。
statement_sql_handle varbinary(64) 適用対象: SQL Server 2014 (12.x) 以降。

SQLクエリのハンドル。

この列は、データベースクエリ ストア有効になっていない場合は NULL です。
statement_context_id bigint 適用対象: SQL Server 2014 (12.x) 以降。

指定する省略可能な外部sys.query_context_settings。

この列は、データベースクエリ ストア有効になっていない場合は NULL です。
dop int 適用対象: SQL Server 2016 (13.x) 以降。

クエリの並列処理の次数。
parallel_worker_count int 適用対象: SQL Server 2016 (13.x) 以降。

並列クエリの場合は、予約済みの並列ワーカーの数。
external_script_request_id uniqueidentifier 適用対象: SQL Server 2016 (13.x) 以降。

現在の要求に関連付けられている外部スクリプト要求 ID。
is_resumable bit 適用対象: SQL Server 2017 (14.x) 以降。

要求が、再送信可能なインデックス操作であるかどうかを示します。
page_resource binary(8) 適用対象: SQL Server 2019 (15.x)

列にページが含まれている場合は、ページ リソースの 8 バイト wait_resource の 16 進数表現。 詳細については、「」を参照sys.fn_PageResCracker。
page_server_reads bigint 適用対象: Azure SQL Database Hyperscale

この要求によって実行されたページ サーバーの読み取り数。 NULL 値は許可されません。
     

注釈

SQL Server 外部のコード (拡張ストアド プロシージャや分散クエリなど) を実行するには、スレッドを非プリエンプティブ スケジューラの制御外で実行する必要があります。 このとき、ワーカーはプリエンプティブ モードに切り替えられます。 この動的管理ビューによって返される時間値には、プリインプティブ モードで費やされた時間は含め "されません"。

行モードで並列要求を実行する場合 は、ワーカースレッドを割り当て、割り当てられたタスクを完了するワーカー スレッド SQL Server を調整します。 この DMV では、コーディネーター スレッドだけが要求に対して表示されます。 列は およびをlogical_reads読みrow_count、コーディネータ ー スレッドに対して更新されません。 、wait_type、wait_time、last_wait_type、wait_resource、granted_query_memoryの列は、コーディネータースレッドに対してだけ更新されます。 詳細については、「スレッドおよびタスクのアーキテクチャ ガイド」を参照してください。

アクセス許可

ユーザーがサーバーに対する権限を持っている場合、 のインスタンスで実行中のすべてのセッションが表示されます。それ以外の場合、ユーザーには現在のセッション VIEW SERVER STATE SQL Server だけが表示されます。 VIEW SERVER STATEは、現在の接続Azure SQL Databaseに制限されます sys.dm_exec_requests

このようなAlways-On、セカンダリ レプリカが読み取り専用に設定されている場合、セカンダリへの接続では、 を追加して、接続文字列パラメーターでアプリケーションの意図を指定する必要があります applicationintent=readonly 。 そうしないと、アクセス許可が存在する場合でも、 のアクセス チェックは可用性グループ内のデータベース sys.dm_exec_requests VIEW SERVER STATE に対して渡されません。

A. 実行中のバッチのクエリ テキストの検索

次の例では、sys.dm_exec_requests をクエリして目的のクエリを検索し、その sql_handle を出力結果からコピーします。

SELECT * FROM sys.dm_exec_requests;  
GO  

次に、ステートメント テキストを取得するには、コピーした をシステム関数 sql_handle と一緒に使用します sys.dm_exec_sql_text(sql_handle)

SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);  
GO  

B. 実行中のバッチが保持しているすべてのロックの検索

次の例では 、sys.dm_exec_requests を検索し、出力から その バッチ transaction_id をコピーします。

SELECT * FROM sys.dm_exec_requests;  
GO

次に、ロック情報を見つけるには、 のシステム transaction_id 関数と一緒にコピーした を使用sys.dm_tran_locks。

SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
    AND request_owner_id = < copied transaction_id >;
GO  

C. 現在ブロックされている要求の検索

次の例 では、sys.dm_exec_requests 要求に関する情報を検索するクエリを実行します。

SELECT session_id ,status ,blocking_session_id  
    ,wait_type ,wait_time ,wait_resource
    ,transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';  
GO  

D. CPU による既存の要求の順序付け

SELECT 
   req.session_id
   , req.start_time
   , cpu_time 'cpu_time_ms'
   , object_name(st.objectid,st.dbid) 'ObjectName' 
   , substring
      (REPLACE
        (REPLACE
          (SUBSTRING
            (ST.text
            , (req.statement_start_offset/2) + 1
            , (
               (CASE statement_end_offset
                  WHEN -1
                  THEN DATALENGTH(ST.text)  
                  ELSE req.statement_end_offset
                  END
                    - req.statement_start_offset)/2) + 1)
       , CHAR(10), ' '), CHAR(13), ' '), 1, 512)  AS statement_text  
FROM sys.dm_exec_requests AS req  
   CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as ST
   ORDER BY cpu_time desc;
GO

参照

動的管理ビューと関数
実行関連の動的管理ビューと関数
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text
SQL Server SQL Statistics オブジェクト
クエリ処理アーキテクチャ ガイド
スレッドおよびタスクのアーキテクチャ ガイド