上次执行的特定数据库查询

Muk*_*kus 66 sql-server sql-server-2012

我知道如何在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
Run Code Online (Sandbox Code Playgroud)

但我想找到一个特定的数据库.如果我不需要,我不想使用SQL事件探查器.另外,我不认为SQL Profiler会允许我查看已经运行但未启用分析的查询.我需要从SSMS做到这一点.

tom*_*y_o 79

这对我来说可以在实例中的任何数据库上查找查询.我是实例上的sysadmin(检查你的权限):

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
Run Code Online (Sandbox Code Playgroud)

这与Aaron Bertrand提供的答案相同,但没有得到答案.

  • 这将查看过程高速缓存并仅显示"CREATE PROCEDURE或FUNCTION"语句,这些语句很有用,但并不完整.请参见http://dba.stackexchange.com/questions/35703/find-all-the-queries-executed-recently-on-a-database (8认同)
  • 但这显示了我没有提交值的原始sql字符串.有没有办法显示提供给执行查询的参数值? (2认同)

Jac*_*nan 18

以下内容非常适合我:希望这有帮助

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
Run Code Online (Sandbox Code Playgroud)

  • 所选答案对 SQL 2019 不起作用,因此我分享了上面有效的答案。 (5认同)