sys.dm_exec_requests

更新 : 2006 年 12 月 12 日

SQL Server 内で実行中の要求ごとに 1 行のデータを返します。サーバー スコープの sys.dm_exec_connectionssys.dm_exec_sessions、および sys.dm_exec_requests 動的管理ビューは、sys.sysprocesses システム ビュー (以前のシステム テーブル) にマップされます。

ms177648.note(ja-jp,SQL.90).gifメモ :
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_offsetsys.dm_exec_sql_text 動的管理関数、および sql_handle と共に使用して、要求に対して実行中のステートメントを取得できます。NULL 値は許可されます。

statement_end_offset

int

実行中のバッチまたはストアド プロシージャ内の実行中のステートメントの終了文字の位置。statement_start_offsetsys.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_transactionssys.dm_tran_locks、または sys.dm_tran_database_transactions の各動的管理ビューにクエリを実行するために使用します。NULL 値は許可されません。

context_info

varbinary(128)

要求の SET CONTEXT_INFO ステートメントからの値。NULL 値は許可されます。

percent_complete

real

特定の操作で完了した作業の比率。ロールバックも含まれます。

ms177648.note(ja-jp,SQL.90).gifメモ :

クエリの進行状況データは提供されません。

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 権限が必要です。

ms177648.note(ja-jp,SQL.90).gifメモ :
ユーザーがサーバーに対する 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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

新しい内容 :
  • SQL Server 2000 から SQL Server 2005 へのマッピングを追加。
  • 例を追加。
  • 「リレーションシップの基数」の表を追加。
変更内容 :
  • start_time、status、sql_handle、plan_handle、database_id、user_id、connection_id、transaction_id、context_info、scheduler_id、task_address、language、date_format、transaction_isolation_level、date_first、executing_managed_code の説明を変更

2005 年 12 月 5 日

新しい内容 :
  • プリエンプティブ モードで費やされた時間に関する注記を追加。
変更内容 :
  • wait_type のデータ型を修正。