88

我知道如何在 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 执行此操作。

4

2 回答 2

100

这对我来说可以在实例中的任何数据库上查找查询。我是实例的系统管理员(检查您的权限):

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 提供的答案相同,但没有放在答案中。

于 2013-05-16T18:27:00.397 回答
3

以下对我来说非常有效:希望这会有所帮助

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
于 2021-10-14T14:51:52.593 回答