sys.dm_exec_sql_text
更新 : 2006 年 12 月 12 日
指定された sql_handle が示す SQL バッチのテキストを返します。このテーブル値関数は、システム関数 fn_get_sql に代わるものです。
構文
sys.dm_exec_sql_text(sql_handle)
引数
sql_handle
検索するバッチの SQL ハンドルを指定します。sql_handle のデータ型は varbinary(64) です。sql_handle は、次の動的管理オブジェクトから取得できます。- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_cursors
- sys.dm_exec_xml_handles
- sys.dm_exec_query_memory_grants
返されるテーブル
列名 | データ型 | 説明 |
---|---|---|
dbid |
smallint |
データベースの ID。 アドホック SQL ステートメントおよび準備された SQL ステートメントの場合は NULL になります。 |
objectid |
int |
オブジェクトの ID。 アドホック SQL ステートメントおよび準備された SQL ステートメントの場合は NULL になります。 |
number |
smallint |
番号付きストアド プロシージャの場合、ストアド プロシージャの番号。詳細については、「sys.numbered_procedures (Transact-SQL)」を参照してください。 アドホック SQL ステートメントおよび準備された SQL ステートメントの場合は NULL になります。 |
encrypted |
bit |
1 = SQL テキストは暗号化されています。 0 = SQL テキストは暗号化されていません。 |
text |
nvarchar(max) |
SQL クエリのテキスト。 暗号化されているオブジェクトの場合は NULL になります。 |
解説
バッチでは、SQL ハンドルは SQL テキストに基づくハッシュ値です。ストアド プロシージャ、トリガ、または関数などのデータベース オブジェクトでは、SQL ハンドルはデータベース ID、オブジェクト ID、オブジェクト番号から取得します。
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
例
A. 平均 CPU 時間に基づく上位 5 つのクエリに関する情報を取得する
次の例では、上位 5 つのクエリにかかった平均 CPU 時間と SQL ステートメントのテキストを返します。
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
B. バッチ実行の統計を取得する
次の例では、バッチで実行されている SQL クエリのテキストを返し、クエリに関する統計情報を提供します。
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
参照
関連項目
動的管理ビューと動的管理関数
実行関連の動的管理ビューおよび関数
sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2006 年 12 月 12 日 |
|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|