sys.dm_exec_requests (Transact-SQL)
SQL Server 内で実行中の各要求に関する情報を返します。
注 |
---|
SQL Server 外部のコード (拡張ストアド プロシージャや分散クエリなど) を実行するには、スレッドを非プリエンプティブ スケジューラの制御外で実行する必要があります。このとき、ワーカーはプリエンプティブ モードに切り替えられます。この動的管理ビューによって返される時間の値には、プリエンプティブ モードで費やされた時間は含まれません。 |
列名 |
データ型 |
説明 |
---|---|---|
session_id |
smallint |
要求が関係しているセッションの ID。NULL 値は許可されません。 |
request_id |
int |
要求の ID。セッションのコンテキスト内で一意です。NULL 値は許可されません。 |
start_time |
datetime |
要求到着時のタイムスタンプ。NULL 値は許可されません。 |
status |
nvarchar(30) |
要求の状態。次のいずれかになります。
NULL 値は許可されません。 |
command |
nvarchar(16) |
現在処理中のコマンドの種類。一般的なコマンドの種類には次のものがあります。
要求のテキストを取得するには、対応する sql_handle と共に、要求に対して sys.dm_exec_sql_text を使用します。内部のシステム処理では、実行するタスクの種類に基づいてコマンドが設定されます。このタスクには次のものがあります。
NULL 値は許可されません。 |
sql_handle |
varbinary(64) |
要求の SQL テキストのハッシュ マップ。NULL 値が許可されます。 |
statement_start_offset |
int |
現在実行中のバッチまたはストアド プロシージャに含まれる、現在実行中のステートメントが開始されるまでの文字数。sql_handle、statement_end_offset、sys.dm_exec_sql_text 動的管理関数と共に使用して、要求に対して現在実行中のステートメントを取得できます。NULL 値が許可されます。 |
statement_end_offset |
int |
現在実行中のバッチまたはストアド プロシージャに含まれる、現在実行中のステートメントが終了するまでの文字数。sql_handle、statement_end_offset、sys.dm_exec_sql_text 動的管理関数と共に使用して、要求に対して現在実行中のステートメントを取得できます。NULL 値が許可されます。 |
plan_handle |
varbinary(64) |
SQL 実行プランのハッシュ マップ。NULL 値が許可されます。 |
database_id |
smallint |
要求の実行対象データベースの ID。NULL 値は許可されません。 |
user_id |
int |
要求を送信したユーザーの ID。NULL 値は許可されません。 |
connection_id |
uniqueidentifier |
要求を受信した接続の ID。NULL 値が許可されます。 |
blocking_session_id |
smallint |
要求をブロックしているセッションの ID。この列が NULL の場合は、要求がブロックされていないか、ブロックしているセッションのセッション情報が使用または識別できません。 -2 = ブロックしているリソースは、孤立した分散トランザクションが所有しています。 -3 = ブロックしているリソースは、遅延復旧トランザクションが所有しています。 -4 = 内部ラッチの状態遷移のため、ブロックしているラッチの所有者のセッション ID を現時点では特定できませんでした。 |
wait_type |
nvarchar(60) |
要求が現在ブロックされている場合の待機の種類。NULL 値が許可されます。 |
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 |
次のコマンドで完了した作業の割合。
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 値が許可されます。 |
reads |
bigint |
要求で実行された読み取りの数。NULL 値は許可されません。 |
writes |
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 値は許可されません。 |
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) |
クエリ実行プランで計算され、同様のクエリ実行プランを識別するために使用される、バイナリのハッシュ値です。クエリ プラン ハッシュを使用して、同様の実行プランを持つクエリの累積コストを確認できます。詳細については、「クエリおよびクエリ プラン ハッシュを使用した類似クエリの検索およびチューニング」を参照してください。 |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
注 |
---|
ユーザーがサーバーに対する VIEW SERVER STATE 権限を所有している場合は、SQL Server のインスタンスで実行中のすべてのセッションが表示されます。それ以外の場合は、現在のセッションだけが表示されます。 |
例
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