SQL Server で実行されたステートメントの確認方法
SQL Server では、次の方法を使用して実行されたステートメントを確認できます。
- SQL Server Management Studio(SSMS)を使用してSSMSを開き、ターゲットのデータベースサーバーへ接続、表示するデータベースを選択、その後「ツール」から「SQL Server プロファイラー」または「ツール」から「SQL Server トレース」を選択してSQL Server プロファイラーまたはSQL Server トレースのウィンドウを開いてください。これらのツールではトレースセッションの設定、監視するイベントの選択、トレースの開始を行えます。トレースセッションは実行したステートメントとその他の関連情報を記録します。
- 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;
上記のクエリを実行すると、実行されたステートメントとその関連統計が、作成時間の降順で返されます。
なお、いずれの方法も実行した文の閲覧には適切な権限が必要です。