sql-serversql-server-2012

Last executed queries for a specific database


I know how to get the last executed queries using the following SQL in 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

But I want to find them for a specific database. I don't want to use SQL Profiler, if I don't have to. Plus I don't think SQL Profiler will allow me to view queries that were already run without profiling turned on. I need to do this from SSMS.


Solution

  • This works for me to find queries on any database in the instance. I'm sysadmin on the instance (check your privileges):

    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
    

    This is the same answer that Aaron Bertrand provided but it wasn't placed in an answer.