【SQL Server】DB内で発行されたSQLを確認する
うっかりSQL Server Profilerを起動し忘れてたとか、ちょろっと確認したい時に便利です。
発行されたSQLをキャッシュから取得する
実際に発行されたSQLはsys.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のカラムを使って「どのクエリが重たいか」とかを調べることが出来ます。「このクエリはどのストアドプロシージャから呼ばれたか」みたいな情報はとれません。残念。