TSQL:获取最后的查询Ran

有没有办法获得最后几个查询的SQL文本?

我正在使用Microsoft SQL Server 2005

是的,看一看,这会给你50个最近执行的SQL语句

SQL 2005和只有

SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName, execution_count,s2.objectid, (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 , ( (CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2) ELSE statement_end_offset END)- statement_start_offset) / 2+1)) AS sql_statement, last_execution_time FROM sys.dm_exec_query_stats AS s1 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %' --and OBJECTPROPERTYEX(x.objectid,'IsProcedure') = 1 ORDER BY last_execution_time DESC 

如果使用SQL Server 2005+:

 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 

从SQLAuthority的大提示!

我知道的唯一方法是运行SQL Server Profiler 。 不幸的是,这需要在执行查询之前启动,所以如果您希望在“特殊”的基础上发生某些事情,那么这将不合适。 如果您试图追踪一段代码的执行情况,并希望捕获它执行的查询,则应该可以起到一定的作用。