【发布时间】:2012-11-18 06:33:46
【问题描述】:
我知道如何在 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 执行此操作。
【问题讨论】:
-
它不会总是被填充,所以你可能会错过一些东西,但作为开始你可以过滤
WHERE dest.dbid = DB_ID('your database name')。如果您想继续跟踪,请不要永远使用 Profiler,除非您希望您的监控真正导致性能问题。使用服务器端跟踪、扩展事件或 3rd 方工具(我知道一个很好的工具)。 -
执行时,它没有得到我的任何行。我几乎没有其他数据库。他们中的任何一个都没有任何表现。也许不是 DB_ID('database name').. id 不一样?
-
上面的查询无法用于确定所有执行的内容,因为我什至看不到数据库的某些 db id。我使用'SELECT name,database_id FROM sys.databases;'
-
@AaronBertrand 为什么不发表您的评论作为答案?您在以下答案前 6 个月回答。我会接受你的。
-
如何使用
server-side trace或extended events记录查询执行数据??能否请您简要介绍一下..
标签: sql-server sql-server-2012