【SQL Server】DB内で発行されたSQLを確認する

うっかりSQL Server Profilerを起動し忘れてたとか、ちょろっと確認したい時に便利です。

発行されたSQLをキャッシュから取得する

実際に発行されたSQLsys.dm_exec_sql_text関数で取得することが出来ます。

引数となるsql_handleはsys.dm_exec_query_statsと言うシステムビューの中にあります。流石に無限にストレージはしないので、遠い昔に発行されたSQLは取れません。

コード

SELECT
 st.text
FROM
 sys.dm_exec_query_stats qs
CROSS APPLY
 sys.dm_exec_sql_text(qs.sql_handle) st

まとめ

sys.dm_exec_query_statsのカラムを使って「どのクエリが重たいか」とかを調べることが出来ます。「このクエリはどのストアドプロシージャから呼ばれたか」みたいな情報はとれません。残念。