sys.dm_exec_requests (TRANSACT-SQL)sys.dm_exec_requests (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 内で実行中の各要求に関する情報を返します。Returns information about each request that is executing within SQL ServerSQL Server.

列名Column name データ型Data type 説明Description
session_idsession_id smallintsmallint この要求が関係しているセッションの ID。ID of the session to which this request is related. NULL 値は許可されません。Is not nullable.
request_idrequest_id intint 要求の ID。ID of the request. セッションのコンテキスト内で一意です。Unique in the context of the session. NULL 値は許可されません。Is not nullable.
start_timestart_time datetimedatetime 要求を受信したときのタイムスタンプ。Timestamp when the request arrived. NULL 値は許可されません。Is not nullable.
statusstatus nvarchar(30)nvarchar(30) 要求の状態です。Status of the request. これは、次のいずれかを指定できます。This can be one of the following:

背景情報Background
実行中Running
実行可能Runnable
休止中Sleeping
中断Suspended

NULL 値は許可されません。Is not nullable.
commandcommand nvarchar(32)nvarchar(32) 現在処理されているコマンドの種類を識別します。Identifies the current type of command that is being processed. 一般的なコマンドの種類には次のものがあります。Common command types include the following:

SELECTSELECT
INSERTINSERT
UPDATEUPDATE
DelDELETE
BACKUP LOGBACKUP LOG
BACKUP DATABASEBACKUP DATABASE
DBCCDBCC
FORFOR

要求のテキストを取得するには、対応する sql_handle と共に、要求に対して sys.dm_exec_sql_text を使用します。The text of the request can be retrieved by using sys.dm_exec_sql_text with the corresponding sql_handle for the request. 内部システム プロセスを実行するタスクの種類に基づいてコマンドを設定します。Internal system processes set the command based on the type of task they perform. タスクを次に含めることができます。Tasks can include the following:

LOCK MONITORLOCK MONITOR
CHECKPOINTLAZYCHECKPOINTLAZY
WRITERWRITER

NULL 値は許可されません。Is not nullable.
sql_handlesql_handle varbinary(64)varbinary(64) バッチを一意に識別するトークンまたはクエリの一部であるストアド プロシージャです。Is a token that uniquely identifies the batch or stored procedure that the query is part of. NULL 値が許可されます。Is nullable.
statement_start_offsetstatement_start_offset intint 現在実行中に文字数のバッチまたはストアド プロシージャが現在実行中のステートメントの開始位置。Number of characters into the currently executing batch or stored procedure at which the currently executing statement starts. sql_handle、statement_end_offset、sys.dm_exec_sql_text 動的管理関数と共に使用して、要求に対して現在実行中のステートメントを取得できます。Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request. NULL 値が許可されます。Is nullable.
statement_end_offsetstatement_end_offset intint 現在実行中に文字数のバッチまたはストアド プロシージャが現在実行中のステートメントが終了します。Number of characters into the currently executing batch or stored procedure at which the currently executing statement ends. sql_handle、statement_end_offset、sys.dm_exec_sql_text 動的管理関数と共に使用して、要求に対して現在実行中のステートメントを取得できます。Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request. NULL 値が許可されます。Is nullable.
plan_handleplan_handle varbinary(64)varbinary(64) 現在実行しているバッチのクエリ実行プランを一意に識別するトークンです。Is a token that uniquely identifies a query execution plan for a batch that is currently executing. NULL 値が許可されます。Is nullable.
database_iddatabase_id smallintsmallint 要求の実行対象データベースの ID。ID of the database the request is executing against. NULL 値は許可されません。Is not nullable.
user_iduser_id intint 要求を送信したユーザーの ID。ID of the user who submitted the request. NULL 値は許可されません。Is not nullable.
connection_idconnection_id uniqueidentifieruniqueidentifier 要求を受信した接続の ID。ID of the connection on which the request arrived. NULL 値が許可されます。Is nullable.
blocking_session_idblocking_session_id smallintsmallint 要求をブロックしているセッションの ID。ID of the session that is blocking the request. この列が NULL の場合は、要求がブロックされていないか、ブロックしているセッションのセッション情報が使用または識別できません。If this column is NULL, the request is not blocked, or the session information of the blocking session is not available (or cannot be identified).

-2 = ブロックしているリソースは、孤立した分散トランザクションが所有しています。-2 = The blocking resource is owned by an orphaned distributed transaction.

-3 ブロック = 遅延復旧トランザクションが所有するリソースです。-3 = The blocking resource is owned by a deferred recovery transaction.

-4 セッション ID を = ブロックしているラッチの所有者特定できませんでしたこの時点で内部ラッチの状態遷移のためです。-4 = Session ID of the blocking latch owner could not be determined at this time because of internal latch state transitions.
wait_typewait_type nvarchar(60)nvarchar(60) 要求が現在ブロックされている場合の待機の種類。If the request is currently blocked, this column returns the type of wait. NULL 値が許可されます。Is nullable.

待機の種類については、次を参照してください。 sys.dm_os_wait_stats (TRANSACT-SQL)します。For information about types of waits, see sys.dm_os_wait_stats (Transact-SQL).
wait_timewait_time intint 要求が現在ブロックされている場合の現時点での待機時間 (ミリ秒単位)。If the request is currently blocked, this column returns the duration in milliseconds, of the current wait. NULL 値は許可されません。Is not nullable.
last_wait_typelast_wait_type nvarchar(60)nvarchar(60) 要求がブロックされていた場合の最後の待機の種類。If this request has previously been blocked, this column returns the type of the last wait. NULL 値は許可されません。Is not nullable.
wait_resourcewait_resource nvarchar (256)nvarchar(256) 要求が現在ブロックされている場合の現在待機中のリソース。If the request is currently blocked, this column returns the resource for which the request is currently waiting. NULL 値は許可されません。Is not nullable.
open_transaction_countopen_transaction_count intint この要求に対して開いているトランザクションの数。Number of transactions that are open for this request. NULL 値は許可されません。Is not nullable.
open_resultset_countopen_resultset_count intint 要求に対して開いている結果セットの数。Number of result sets that are open for this request. NULL 値は許可されません。Is not nullable.
transaction_idtransaction_id bigintbigint 要求が実行されるトランザクションの ID。ID of the transaction in which this request executes. NULL 値は許可されません。Is not nullable.
context_infocontext_info varbinary (128)varbinary(128) セッションの CONTEXT_INFO 値。CONTEXT_INFO value of the session. NULL 値が許可されます。Is nullable.
percent_completepercent_complete realreal 次のコマンドで完了した作業の割合。Percentage of work completed for the following commands:

ALTER INDEX REORGANIZEALTER INDEX REORGANIZE
ALTER DATABASE の AUTO_SHRINK オプションAUTO_SHRINK option with ALTER DATABASE
BACKUP DATABASEBACKUP DATABASE
DBCC CHECKDBDBCC CHECKDB
DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKTABLEDBCC CHECKTABLE
DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC SHRINKFILEDBCC SHRINKFILE
RECOVERYRECOVERY
RESTORE DATABASERESTORE DATABASE
ROLLBACKROLLBACK
TDE 暗号化TDE ENCRYPTION

NULL 値は許可されません。Is not nullable.
estimated_completion_timeestimated_completion_time bigintbigint 内部のみ。Internal only. NULL 値は許可されません。Is not nullable.
cpu_timecpu_time intint 要求で使用される CPU 時間 (ミリ秒単位)。CPU time in milliseconds that is used by the request. NULL 値は許可されません。Is not nullable.
total_elapsed_timetotal_elapsed_time intint 要求を受信してから経過した総時間 (ミリ秒単位)。Total time elapsed in milliseconds since the request arrived. NULL 値は許可されません。Is not nullable.
scheduler_idscheduler_id intint この要求のスケジュールを設定しているスケジューラの ID。ID of the scheduler that is scheduling this request. NULL 値は許可されません。Is not nullable.
task_addresstask_address varbinary(8)varbinary(8) この要求に関連付けられているタスクに割り当てられたメモリ アドレス。Memory address allocated to the task that is associated with this request. NULL 値が許可されます。Is nullable.
readsreads bigintbigint 要求で実行された読み取りの数。Number of reads performed by this request. NULL 値は許可されません。Is not nullable.
writeswrites bigintbigint 要求で実行された書き込みの数。Number of writes performed by this request. NULL 値は許可されません。Is not nullable.
logical_readslogical_reads bigintbigint 要求で実行された論理読み取りの数。Number of logical reads that have been performed by the request. NULL 値は許可されません。Is not nullable.
text_sizetext_size intint 要求の TEXTSIZE 設定。TEXTSIZE setting for this request. NULL 値は許可されません。Is not nullable.
languagelanguage nvarchar(128)nvarchar(128) 要求の言語設定。Language setting for the request. NULL 値が許可されます。Is nullable.
date_formatdate_format nvarchar(3)nvarchar(3) 要求の DATEFORMAT 設定。DATEFORMAT setting for the request. NULL 値が許可されます。Is nullable.
date_firstdate_first smallintsmallint 要求の DATEFIRST 設定。DATEFIRST setting for the request. NULL 値は許可されません。Is not nullable.
quoted_identifierquoted_identifier bitbit 1 = 要求に対して QUOTED_IDENTIFIER が ON です。1 = QUOTED_IDENTIFIER is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
arithabortarithabort bitbit 1 = 要求に対して ARITHABORT 設定が ON です。1 = ARITHABORT setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
ansi_null_dflt_onansi_null_dflt_on bitbit 1 = ANSI_NULL_DFLT_ON 設定は ON が要求されます。1 = ANSI_NULL_DFLT_ON setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
ansi_defaultsansi_defaults bitbit 1 = 要求に対して ANSI_DEFAULTS 設定が ON です。1 = ANSI_DEFAULTS setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
ansi_warningsansi_warnings bitbit 1 = 要求に対して ANSI_WARNINGS 設定が ON です。1 = ANSI_WARNINGS setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
ansi_paddingansi_padding bitbit 1 = ANSI_PADDING 設定は ON が要求されます。1 = ANSI_PADDING setting is ON for the request.

それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
ansi_nullsansi_nulls bitbit 1 = ANSI_NULLS 設定は ON が要求されます。1 = ANSI_NULLS setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
concat_null_yields_nullconcat_null_yields_null bitbit 1 = 要求に対して CONCAT_NULL_YIELDS_NULL 設定が ON です。1 = CONCAT_NULL_YIELDS_NULL setting is ON for the request. それ以外の場合は 0 です。Otherwise, it is 0.

NULL 値は許可されません。Is not nullable.
transaction_isolation_leveltransaction_isolation_level smallintsmallint この要求に対するトランザクションの作成に使用された分離レベル。Isolation level with which the transaction for this request is created. NULL 値は許可されません。Is not nullable.

0 = Unspecified0 = Unspecified

1 = ReadUncomitted1 = ReadUncomitted

2 = ReadCommitted2 = ReadCommitted

3 = Repeatable3 = Repeatable

4 = Serializable4 = Serializable

5 = Snapshot5 = Snapshot
lock_timeoutlock_timeout intint 要求のロック タイムアウトまでの時間 (ミリ秒単位)。Lock time-out period in milliseconds for this request. NULL 値は許可されません。Is not nullable.
deadlock_prioritydeadlock_priority intint 要求の DEADLOCK_PRIORITY 設定。DEADLOCK_PRIORITY setting for the request. NULL 値は許可されません。Is not nullable.
row_countrow_count bigintbigint この要求によってクライアントに返された行の数。Number of rows that have been returned to the client by this request. NULL 値は許可されません。Is not nullable.
prev_errorprev_error intint 要求の実行中に発生した最後のエラー。Last error that occurred during the execution of the request. NULL 値は許可されません。Is not nullable.
nest_levelnest_level intint 要求が実行されているコードの現在の入れ子レベル。Current nesting level of code that is executing on the request. NULL 値は許可されません。Is not nullable.
granted_query_memorygranted_query_memory intint 要求でのクエリの実行に割り当てられたページ数。Number of pages allocated to the execution of a query on the request. NULL 値は許可されません。Is not nullable.
executing_managed_codeexecuting_managed_code bitbit 特定の要求で、ルーチン、データ型、トリガーなどの共通言語ランタイム オブジェクトが現在実行されているかどうかを示します。Indicates whether a specific request is currently executing common language runtime objects, such as routines, types, and triggers. 共通言語ランタイム オブジェクトが共通言語ランタイム内から Transact-SQLTransact-SQL を実行した場合でも、共通言語ランタイム オブジェクトがスタックにある間は、このパラメーターが必ず設定されます。It is set for the full time a common language runtime object is on the stack, even while running Transact-SQLTransact-SQL from within common language runtime. NULL 値は許可されません。Is not nullable.
group_idgroup_id intint このクエリが属しているワークロード グループの ID。ID of the workload group to which this query belongs. NULL 値は許可されません。Is not nullable.
query_hashquery_hash binary(8)binary(8) クエリで計算され、同様のロジックを持つクエリを識別するために使用される、バイナリのハッシュ値です。Binary hash value calculated on the query and used to identify queries with similar logic. クエリ ハッシュを使用して、リテラル値だけが異なるクエリの全体的なリソース使用率を決定できます。You can use the query hash to determine the aggregate resource usage for queries that differ only by literal values.
query_plan_hashquery_plan_hash binary(8)binary(8) クエリ実行プランで計算され、同様のクエリ実行プランを識別するために使用される、バイナリのハッシュ値です。Binary hash value calculated on the query execution plan and used to identify similar query execution plans. クエリ プラン ハッシュを使用して、同様の実行プランを持つクエリの累積コストを確認できます。You can use query plan hash to find the cumulative cost of queries with similar execution plans.
statement_sql_handlestatement_sql_handle varbinary(64)varbinary(64) 適用対象: SQL Server 2014 (12.x)SQL Server 2014 (12.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through SQL Server 2017SQL Server 2017.

個別のクエリの SQL ハンドル。SQL handle of the individual query.

データベースのクエリ ストアが有効でない場合、この列は NULL です。This column is NULL if Query Store is not enabled for the database.
statement_context_idstatement_context_id bigintbigint 適用対象: SQL Server 2014 (12.x)SQL Server 2014 (12.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through SQL Server 2017SQL Server 2017.

Sys.query_context_settings の省略可能な外部キーです。The optional foreign key to sys.query_context_settings.

データベースのクエリ ストアが有効でない場合、この列は NULL です。This column is NULL if Query Store is not enabled for the database.
dopdop intint 適用対象: SQL Server 2016 (13.x)SQL Server 2016 (13.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017.

クエリの並列処理の次数。The degree of parallelism of the query.
parallel_worker_countparallel_worker_count intint 適用対象: SQL Server 2016 (13.x)SQL Server 2016 (13.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017.

これが、並列クエリの場合の予約済みの並列ワーカーの数。The number of reserved parallel workers if this is a parallel query.
external_script_request_idexternal_script_request_id uniqueidentifieruniqueidentifier 適用対象: SQL Server 2016 (13.x)SQL Server 2016 (13.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017.

現在の要求に関連付けられている外部スクリプト要求 ID です。The external script request ID associated with the current request.
is_resumableis_resumable bitbit 適用対象: SQL Server 2017 (14.x)SQL Server 2017 (14.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) through SQL Server 2017SQL Server 2017.

要求が再開可能なインデックス操作であるかどうかを示します。Indicates whether the request is a resumable index operation.
page_resourcepage_resource binary(8)binary(8) 適用対象: SQL Server 2019 プレビューSQL Server 2019 previewApplies to: SQL Server 2019 プレビューSQL Server 2019 preview

8 バイトの 16 進数表現ページ リソースの場合、wait_resource列には、ページが含まれています。An 8-byte hexadecimal representation of the page resource if the wait_resource column contains a page.
page_server_readspage_server_reads bigintbigint 適用対象:Azure SQL データベースのハイパー スケールApplies to: Azure SQL Database Hyperscale

この要求によって実行されるページ サーバーの読み取りの数。Number of page server reads performed by this request. NULL 値は許可されません。Is not nullable.

コメントRemarks

SQL ServerSQL Server 外部のコード (拡張ストアド プロシージャや分散クエリなど) を実行するには、スレッドを非プリエンプティブ スケジューラの制御外で実行する必要があります。To execute code that is outside SQL ServerSQL Server (for example, extended stored procedures and distributed queries), a thread has to execute outside the control of the non-preemptive scheduler. このとき、ワーカーはプリエンプティブ モードに切り替えられます。To do this, a worker switches to preemptive mode. この動的管理ビューによって返される時刻値では、プリエンプティブ モードで費やされた時間は含まれません。Time values returned by this dynamic management view do not include time spent in preemptive mode.

並列要求の実行時に行モードSQL ServerSQL Server担当タスクの割り当てを完了するためのワーカー スレッドを調整するワーカー スレッドを割り当てます。When executing parallel requests in row mode, SQL ServerSQL Server assigns a worker thread to coordinate the worker threads responsible for completing tasks assigned to them. この DMV には、コーディネーター スレッドのみ、要求に対して表示されます。In this DMV only the coordinator thread is visible for the request. 読み取り書き込みますlogical_reads、およびrow_countは更新されませんのコーディネーター スレッドです。The columns reads, writes, logical_reads, and row_count are not updated for the coordinator thread. wait_typewait_timelast_wait_typewait_resource、およびgranted_query_memoryのみ更新コーディネーター スレッド。The columns wait_type, wait_time, last_wait_type, wait_resource, and granted_query_memory are only updated for the coordinator thread. 詳細については、次を参照してください。、スレッドとタスクのアーキテクチャ ガイドします。For more information, see the Thread and Task Architecture Guide.

アクセス許可Permissions

ある場合、ユーザーはVIEW SERVER STATEサーバーに対する権限を実行中のすべてのセッションを表示のインスタンスでSQL ServerSQL Server、それ以外のユーザーは、現在のセッションのみを参照してください。If the user has VIEW SERVER STATE permission on the server, the user will see all executing sessions on the instance of SQL ServerSQL Server; otherwise, the user will see only the current session. VIEW SERVER STATE 付与することはできませんSQL DatabaseSQL Databaseようにsys.dm_exec_requests現在の接続に制限は常にします。VIEW SERVER STATE cannot be granted in SQL DatabaseSQL Database so sys.dm_exec_requests is always limited to the current connection.

使用例Examples

A.A. 実行中のバッチのクエリ テキストを探すFinding the query text for a running batch

次の例では、sys.dm_exec_requests をクエリして目的のクエリを検索し、その sql_handle を出力結果からコピーします。The following example queries sys.dm_exec_requests to find the interesting query and copy its sql_handle from the output.

SELECT * FROM sys.dm_exec_requests;  
GO  

次に、ステートメントのテキストを取得するには、使用、コピーしたsql_handleをシステム関数sys.dm_exec_sql_text(sql_handle)します。Then, to obtain the statement text, use the copied sql_handle with system function sys.dm_exec_sql_text(sql_handle).

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

B.B. 実行中のバッチが保持しているすべてのロックを検索Finding all locks that a running batch is holding

次の例のクエリsys.dm_exec_requests興味深いバッチとコピーを検索するそのtransaction_id出力からします。The following example queries sys.dm_exec_requests to find the interesting batch and copy its transaction_id from the output.

SELECT * FROM sys.dm_exec_requests;  
GO

次に、ロックの情報を検索するには、使用、コピーしたtransaction_idをシステム関数sys.dm_tran_locksします。Then, to find lock information, use the copied transaction_id with the system function 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.C. ブロックされている要求の現在のすべての検索Finding all currently blocked requests

次の例のクエリsys.dm_exec_requestsブロックされた要求に関する情報を検索します。The following example queries sys.dm_exec_requests to find information about blocked 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.D. CPU によって既存の要求を順序付けOrdering existing requests by 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

参照See Also