检索SQL Server执行的查询

时间:2014-12-19 16:44:12

标签: sql-server

有谁能告诉我,我们如何能够检索在2个日期之间在数据库上执行的所有sql server查询?

我在网上找到以下查询,但这很复杂:

SELECT      QS.creation_time Creation,
        QS.last_execution_time LastExec,
        QS.plan_generation_num NbComp,
        QS.execution_count NbExec, 
        OBJECT_NAME(SQL.objectid) Procedures,
        SUBSTRING
        (
            SQL.text,
            QS.statement_start_offset / 2 + 1,
            (
                CASE
                    WHEN QS.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), SQL.text)) * 2 
                    ELSE QS.statement_end_offset 
                END - QS.statement_start_offset
            ) / 2 + 1
        ) AS Instruction
FROM sys.dm_exec_query_stats QS 
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) SQL

我还改造了这个查询只给我查询在此日期之后执行的查询:2014-12-19 14:06:12.250,这是我重新启动我拥有数据库的服务器的日期。

是否有查询为我们提供当天所有已执行的查询?

由于

2 个答案:

答案 0 :(得分:1)

那是因为你正在查看过程缓存,并且所使用的计划可能不再存在(服务器/实例重启,手动清除proc缓存等等。)

sys.dm_exec_query_stats的初始查询可能会产生不准确的结果 当前正在服务器上执行工作负载。更准确的结果 可以通过重新运行查询来确定来源: MSDN

要获取针对实例执行的查询,请创建SQL Trace

在捕获 SQL:StmtCompleted 事件的SQL跟踪中。

答案 1 :(得分:0)

这个查询最近帮助我“记住”了我最近使用的一些SQL,并为我节省了大量的时间来重做它。详细,不是特定于日期(并且可能受到pdrb描述的相同限制),但我能够找到我想要的内容:

{    
    //some other settings
    "editor.renderIndentGuides": true
}