2020年8月16日日曜日

データベースに発行されたSQLのログを取得する方法

SQL serverの場合。

下記のSQLにて発行されたSQLのログを取得することができます。

SELECT last_execution_time,st.text
FROM   sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE  last_execution_time >= '2020/08/01 10:30:00'
ORDER BY last_execution_time

ある画面の登録ボタンを押したときにどのテーブルに対して処理をしているのかを調べたい場合、
last_execution_timeの範囲を絞って、ボタン押下前の時点で1件も結果が取得できないことを確認します。
その後、登録ボタンを押して、上記のSQLを実行すると、そのボタン押下時にアクセスするテーブルをもれなく洗い出すことができます。

このSQLはSQL server向けですが、それぞれのDBに似たようなものがあると思います。