web-dev-qa-db-ja.com

特定のデータベースに対して最後に実行されたクエリ

私はSSMSで次のSQLを使用して最後に実行されたクエリを取得する方法を知っています-

SELECT deqs.last_execution_time AS [Time], dest.text AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC

しかし、特定のデータベース用にそれらを見つけたいです。必要がない場合は、SQLプロファイラーを使用したくありません。さらに、SQLプロファイラーでは、プロファイリングを有効にせずに既に実行されたクエリを表示できるとは思いません。 SSMSからこれを行う必要があります。

64
Mukus

これは、インスタンス内の任意のデータベースでクエリを見つけるのに役立ちます。私はインスタンスのsysadminです(特権を確認してください):

SELECT deqs.last_execution_time AS [Time], dest.text AS [Query], dest.*
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE dest.dbid = DB_ID('msdb')
ORDER BY deqs.last_execution_time DESC

これは、アーロンバートランドが提供したものと同じ回答ですが、回答には含まれていません。

77
tommy_o