有谁能告诉我,我们如何能够检索在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,这是我重新启动我拥有数据库的服务器的日期。
是否有查询为我们提供当天所有已执行的查询?
由于
答案 0 :(得分:1)
那是因为你正在查看过程缓存,并且所使用的计划可能不再存在(服务器/实例重启,手动清除proc缓存等等。)
sys.dm_exec_query_stats的初始查询可能会产生不准确的结果 当前正在服务器上执行工作负载。更准确的结果 可以通过重新运行查询来确定来源: MSDN
要获取针对实例执行的查询,请创建SQL Trace
。
在捕获 SQL:StmtCompleted 事件的SQL跟踪中。
答案 1 :(得分:0)
这个查询最近帮助我“记住”了我最近使用的一些SQL,并为我节省了大量的时间来重做它。详细,不是特定于日期(并且可能受到pdrb描述的相同限制),但我能够找到我想要的内容:
{
//some other settings
"editor.renderIndentGuides": true
}