6

我的一位在 SQL Server 2008 中开发基于触发器的日志记录工具的开发人员问我是否有一个命令可以检索T-SQL 中最近执行的 SQL 命令。我以为只有这样的功能有一个系统存储过程,但我可能正在考虑前十年的另一种产品......在线搜索没有给我们带来任何结果。

有没有人有任何此类信息?

4

3 回答 3

19

一定要试试这个:

SELECT
DMExQryStats.last_execution_time AS [Executed At],
DMExSQLTxt.text AS [Query]
FROM
sys.dm_exec_query_stats AS DMExQryStats
CROSS APPLY
sys.dm_exec_sql_text(DMExQryStats.sql_handle) AS DMExSQLTxt
ORDER BY
DMExQryStats.last_execution_time DESC

它将返回最近执行的查询以及它们执行的日期和时间

于 2009-07-28T19:34:27.263 回答
4

好吧,检索最新 SQL 批处理的过程可以安全地返回自身 :)

严肃地说,您可以根据该列查看sys.dm_exec_query_statssys.dm_exec_procedure_stats查看上次执行计划的时间。last_execution_time但请注意,该方法不可靠,因为它不考虑执行后从缓存中逐出的计划。

于 2009-07-28T19:38:50.530 回答
1

在多核机器的上下文中,“最近的”是什么意思?

另外,他是指最近开始的,还是最近完成的?

最后,他应该只打开 SSMS 并查看 Activity Monitor。

于 2009-07-28T19:33:57.357 回答