sys.dm_exec_requests
更新 : 2006 年 12 月 12 日
SQL Server 内で実行中の要求ごとに 1 行のデータを返します。サーバー スコープの sys.dm_exec_connections、sys.dm_exec_sessions、および sys.dm_exec_requests 動的管理ビューは、sys.sysprocesses システム ビュー (以前のシステム テーブル) にマップされます。
メモ : |
---|
SQL Server 外部のコード (拡張ストアド プロシージャや分散クエリなど) を実行するには、スレッドを非プリエンプティブ スケジューラの制御外で実行する必要があります。このとき、ワーカーはプリエンプティブ モードに切り替えられます。この動的管理ビューによって返される時間の値には、プリエンプティブ モードで費やされた時間は含まれません。 |
列名
データ型
説明
session_id
smallint
要求が関係しているセッションの ID。NULL 値は許可されません。
request_id
int
要求の ID。セッションのコンテキスト内で一意です。NULL 値は許可されません。
start_time
datetime
要求の実行予定時刻。NULL 値は許可されません。
status
nvarchar(60)
要求の状態。次のいずれかの値になります。
- Background : リソース モニタやデッドロック モニタなどのバックグラウンド スレッドです。
- Running : 要求が実行されています。
- Runnable : 実行中ですが、クォーラムが不足しているため、一時的にスケジュールから除外されています。
- Sleeping : 実行する作業がありません。
- Pending : ワーカーによって使用されるのを待機しています。
- Suspended : イベントの発生を待機しています。
NULL 値は許可されません。
command
nvarchar(32)
処理中のコマンドの種類。一般的なコマンドの種類には次のものがあります。
- SELECT
- INSERT
- UPDATE
- DELETE
- BACKUP LOG
- BACKUP DB
- DBCC
- WAITFOR
要求のテキストを取得するには、対応する sql_handle と共に、要求に対して sys.dm_exec_sql_text 動的管理関数を使用します。内部のシステム処理では、実行するタスクの種類に基づいてコマンドが設定されます。このタスクには次のものがあります。
- LOCK MONITOR
- CHECKPOINTLAZY
- WRITER
NULL 値は許可されません。
sql_handle
varbinary(64)
要求の SQL ステートメントへのハンドル。このハンドルは、sys.dm_exec_sql_text 動的管理関数から実際のステートメントのテキストを取得するために使用できます。NULL 値は許可されません。
statement_start_offset
int
実行中のバッチまたはストアド プロシージャ内の実行中のステートメントの開始文字の位置。statement_end_offset、sys.dm_exec_sql_text 動的管理関数、および sql_handle と共に使用して、要求に対して実行中のステートメントを取得できます。NULL 値は許可されます。
statement_end_offset
int
実行中のバッチまたはストアド プロシージャ内の実行中のステートメントの終了文字の位置。statement_start_offset、sys.dm_exec_sql_text 動的管理関数、および sql_handle と共に使用して、要求に対して実行中のステートメントを取得できます。NULL 値は許可されます。
plan_handle
varbinary(64)
要求のクエリ プランへのハンドル。クエリ プランを表示するには、sys.dm_exec_query_plan 動的管理関数と共に使用します。プラン キャッシュにクエリを実行するには、sys.dm_exec_cached_plans 動的管理ビューを使用します。プランの属性を表示するには、sys.dm_exec_plan_attributes 関数を使用します。NULL 値は許可されます。
database_id
smallint
要求を実行しているデータベースの ID。データベースの詳細を表示するには sys.databases カタログ ビューにクエリを実行します。データベース名を取得するには、固有の関数 db_name() を使用します。NULL 値は許可されません。
user_id
int
要求を実行しているユーザー ID。ユーザーの詳細を表示するには、sys.database_principals カタログ ビューにクエリを実行します。NULL 値は許可されません。
connection_id
uniqueidentifier
要求を受信した接続の ID。物理接続または論理接続の詳細を表示するには、sys.dm_exec_connections 動的管理ビューにクエリを実行します。NULL 値は許可されます。
blocking_session_id
smallint
要求をブロックしているセッションの ID。この列が 0 の場合は、要求がブロックされていないか、ブロックしているセッションの情報が使用または識別できません。
-2 = ブロックしているリソースは、孤立した分散トランザクションが所有しています。
-3 = ブロックしているリソースは、遅延復旧トランザクションが所有しています。
-4 = 内部ラッチの状態遷移のため、ブロックしているラッチの所有者のセッション ID を特定できませんでした。
wait_type
nvarchar(60)
要求がブロックされている場合の待機の種類。NULL 値は許可されます。
wait_time
int
要求がブロックされている場合の現時点での待機時間 (ミリ秒単位)。NULL 値は許可されません。
last_wait_type
nvarchar(64)
要求がブロックされていた場合の最後の待機の種類。NULL 値は許可されません。
wait_resource
nvarchar(512)
要求がブロックされている場合の待機中のリソース。NULL 値は許可されません。
open_transaction_count
int
要求に対して開いているトランザクションの数。NULL 値は許可されません。
open_resultset_count
int
要求に対して開いている結果セットの数。NULL 値は許可されません。
transaction_id
bigint
要求が実行されるトランザクションの ID。この ID は SQL Server のインスタンスに対して一意です。sys.dm_tran_active_transactions、sys.dm_tran_locks、または sys.dm_tran_database_transactions の各動的管理ビューにクエリを実行するために使用します。NULL 値は許可されません。
context_info
varbinary(128)
要求の SET 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。このスケジューラの詳細を表示するには、sys.dm_os_schedulers 動的管理ビューにクエリを実行します。NULL 値は許可されません。
task_address
varbinary(8)
要求に関連付けられたタスクに割り当てられるメモリ アドレス。このタスクの詳細を表示するには、sys.dm_os_tasks 動的管理ビューにクエリを実行します。NULL 値は許可されます。
reads
bigint
要求で実行された読み取りの数。NULL 値は許可されません。
writes
bigint
要求で実行された書き込みの数。NULL 値は許可されません。
logical_reads
bigint
要求で実行された論理読み取りの数。NULL 値は許可されません。
text_size
int
要求の TEXTSIZE 設定。NULL 値は許可されません。
language
nvarchar(256)
要求の言語設定。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
この要求のトランザクション分離レベル。次のいずれかの値になります。
0 = Unspecified
1 = ReadUncomitted
2 = ReadCommitted
3 = Repeatable
4 = Serializable
5 = Snapshot
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 値は許可されません。
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
メモ : |
---|
ユーザーがサーバーに対する VIEW SERVER STATE 権限を所有している場合は、SQL Server のインスタンスで実行中のすべてのセッションが表示されます。それ以外の場合は、sys.dm_exec_requests が実行されているセッションだけが表示されます。 |
リレーションシップの基数
関連元 | 関連先 | 基準/APPLY | リレーションシップ |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
一対 ゼロまたは多 |
sys.dm_exec_requests |
sys.dm_exec_sql_text(sql_handle) |
CROSS APPLY OUTER APPLY |
ゼロまたは一対 ゼロまたは一 |
sys.dm_exec_requests |
sys.dm_exec_query_plan(plan_handle) |
CROSS APPLY OUTER APPLY |
ゼロまたは一対 ゼロまたは一 |
sys.dm_exec_requests |
sys.dm_exec_cached_plans |
plan_handle |
ゼロまたは一対 ゼロまたは一 |
sys.dm_exec_requests |
sys.dm_exec_plan_attributes(plan_handle) |
CROSS APPLY OUTER APPLY |
ゼロまたは一対 ゼロまたは一 |
sys.dm_exec_requests |
sys.databases |
database_id |
一対一 |
sys.dm_exec_requests |
sys.database_principals |
user_id = principal_id |
一対一 |
sys.dm_exec_connections |
sys.dm_exec_requests |
connection_id |
一対 ゼロまたは一 |
sys.dm_exec_requests |
sys.dm_tran_active_transactions |
transaction_id |
一対一 |
例
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
参照
関連項目
SQL Server 2000 システム テーブルから SQL Server 2005 システム ビューへのマッピング
動的管理ビューと動的管理関数
実行関連の動的管理ビューおよび関数
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
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|
2005 年 12 月 5 日 |
|