SQL Server で実行されたステートメントの確認方法

SQL Server では、次の方法を使用して実行されたステートメントを確認できます。

  1. SQL Server Management Studio(SSMS)を使用してSSMSを開き、ターゲットのデータベースサーバーへ接続、表示するデータベースを選択、その後「ツール」から「SQL Server プロファイラー」または「ツール」から「SQL Server トレース」を選択してSQL Server プロファイラーまたはSQL Server トレースのウィンドウを開いてください。これらのツールではトレースセッションの設定、監視するイベントの選択、トレースの開始を行えます。トレースセッションは実行したステートメントとその他の関連情報を記録します。
  2. SQL Serverのシステムビューを利用しましょう:SQL Serverの対象データベースでは、いくつかのシステムビューを照会することで、実行されたステートメントを確認できます。たとえば、sys.dm_exec_query_statsビューを利用すれば、実行されたステートメントやその実行プランに関する統計情報を調べることが可能です。また、sys.dm_exec_sql_textビューを使用して、実行されたSQLステートメントのテキストを取得できます。

以下に例のクエリを示します。sys.dm_exec_query_statsビューを使用すると、現在のデータベースで実行されたステートメントと、その実行計画に関する統計情報をいくつか見ることができます。

SELECT 
    OBJECT_NAME(qt.objectid) AS 'ObjectName',
    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 'ExecutedQuery',
    qs.execution_count AS 'ExecutionCount',
    qs.total_logical_reads AS 'TotalLogicalReads',
    qs.total_logical_writes AS 'TotalLogicalWrites',
    qs.total_physical_reads AS 'TotalPhysicalReads',
    qs.creation_time AS 'CreationTime'
FROM 
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) AS st
LEFT JOIN 
    sys.dm_exec_query_stats AS qt ON qs.plan_handle = qt.plan_handle
ORDER BY 
    qs.creation_time DESC;

上記のクエリを実行すると、実行されたステートメントとその関連統計が、作成時間の降順で返されます。

なお、いずれの方法も実行した文の閲覧には適切な権限が必要です。

bannerAds