web-dev-qa-db-fra.com

Dernières requêtes exécutées pour une base de données spécifique

Je sais comment obtenir les dernières requêtes exécutées à l'aide du code SQL suivant dans SSMS -

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

Mais je veux les trouver pour une base de données spécifique. Je ne veux pas utiliser SQL Profiler, si je ne suis pas obligé. De plus, je ne pense pas que SQL Profiler me permettra d’afficher les requêtes qui ont déjà été exécutées sans profilage activé. J'ai besoin de faire ça depuis SSMS.

64
Mukus

Cela fonctionne pour moi pour trouver des requêtes sur n'importe quelle base de données dans l'instance. Je suis administrateur système sur l'instance (vérifiez vos privilèges):

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

C'est la même réponse que Aaron Bertrand a fournie mais elle n'a pas été insérée dans une réponse.

77
tommy_o