クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
SQL Server
SQL Server 2008
データベース エンジン
テクニカル リファレンス
Transact-SQL リファレンス
 sys.dm_exec_sql_text (Transact-SQL)

  低帯域幅での表示をオンにする
コミュニティ コンテンツ
このセクションの内容
その他のバージョンについては、以下の情報を参照してください。
SQL Server 2008 オンライン ブック (2009 年 5 月)
sys.dm_exec_sql_text (Transact-SQL)

指定された sql_handle が示す SQL バッチのテキストを返します。このテーブル値関数は、システム関数 fn_get_sql に代わるものです。

sys.dm_exec_sql_text(sql_handle | plan_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
  • sys.dm_exec_connections
plan_handle

クエリ プランの識別子です。

詳細については、「sys.dm_exec_text_query_plan (Transact-SQL)」を参照してください。

列名 データ型 説明

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、オブジェクト番号から取得します。plan_handle はバッチ全体のコンパイル済みプランから取得したハッシュ値です。

サーバーに対する 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;
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker