Sql server 针对特定数据库的上次执行的查询

Sql server 针对特定数据库的上次执行的查询,sql-server,sql-server-2012,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 但是我想为一个特定的数据库找到它们。如果不需

我知道如何在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分析器。另外,我认为SQL Profiler不允许我查看在未启用评测的情况下已经运行的查询。我需要从SSMS执行此操作。

这对我查找实例中任何数据库的查询都很有用。我是实例的系统管理员(请检查您的权限):


这与Aaron Bertrand提供的答案相同,但没有放在答案中。

它不会总是被填充,因此您可能会错过一些内容,但首先您可以在
上进行筛选,其中dest.dbid=DB_ID(“您的数据库名”)
。如果您想继续跟踪,请永远不要使用探查器,除非您希望您的监视实际上会导致性能问题。使用服务器端跟踪、扩展事件或第三方工具(我知道一个非常好的工具)。虽然它执行,但它不会得到我的任何行。我几乎没有其他数据库。对他们中的任何一个来说都没有表现出来。也许它不是DB_ID(‘数据库名称’)。。ID是不同的?上面的查询无法确定所有执行的是什么,因为我甚至没有看到数据库的一些db ID。我使用了“从sys.databases中选择名称、数据库\u id;”@阿伦伯特兰:你为什么不发表你的评论作为回答呢?您在下面的答案之前6个月回答了。我接受你的。如何使用
服务器端跟踪
扩展事件
记录查询执行数据??您能简要介绍一下吗..这将查看过程缓存并仅显示
CREATE procedure或FUNCTION
语句,这很有用,但不完整。请参阅,但这显示了没有提交值的原始sql字符串。是否有任何方法显示提供给已执行查询的参数值??im sysadmin。我从c#sqldataadapter执行查询。但是没有结果出现?!执行查询使用哪个数据库?master、msdb、tempdb?这在SQL Server 2012中有效,而在SQL Server 2008中无效。
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