我知道如何在 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 Profiler。另外,我认为 SQL Profiler 不允许我查看在未打开分析的情况下已经运行的查询。我需要从 SSMS 执行此操作。
这适用于我查找实例中任何数据库的查询。 我是实例的系统管理员(检查您的权限):
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
这与 Aaron Bertrand 提供的答案相同,但没有放在答案中。
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