我的一位开发人员在SQL Server 2008中处理基于触发器的日志记录工具,问我是否有命令在T-SQL中检索最近执行的SQL命令。我认为有一个系统存储过程只是为了这样一个功能,但我可能正在考虑前十年的另一个产品...在线搜索没有给我们带来任何结果。
有没有人有关于此类事情的信息?
答案 0 :(得分: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
它将返回最近执行的查询以及执行它们的日期和时间
答案 1 :(得分:4)
好吧,检索最新SQL批处理的过程可以安全地自行返回:)
严肃地说,您可以根据last_execution_time
列查看sys.dm_exec_query_stats
和sys.dm_exec_procedure_stats
以查看上次执行计划的时间。但请注意,方法不可靠,因为它没有考虑执行后从缓存中逐出的计划。
答案 2 :(得分:1)
“最新”在多核机器的背景下意味着什么?
另外,他是指最近开始的,还是最近完成的?
最后,他应该打开SSMS并查看Activity Monitor。