sql-server – 查找最近在数据库上执行的所有查询
[我是初级级别的T-SQL程序员]
[..希望我在正确的堆栈交换网站上] 我想得到我执行的所有查询的列表(至少,我今天早上执行的那些查询).我需要报告查询的执行时间. 在线搜索并没有给我带来太多有用的信息.我在网上找到的唯一一个看起来非常接近的查询是 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 这个查询返回了一些奇怪的结果(其中大部分是一堆sprocs).此外,所有这些结果显示自今天下午以来执行的查询(我需要从早上开始查询). 我在之前的问题中找不到任何内容(如果已经提出类似的问题,请指出我). 我看到了一些关于SQL Profiler的建议,但我想探查器只有在我已经开始跟踪时才会帮助我(如果我错了,请纠正我). 有人可以建议我如何获取自上午以来在数据库上执行的所有查询的列表(包括查询执行时间). [如果我还能以某种方式获得执行查询的用户的用户名,那将是有帮助的(不是要求)] 解决方法
那是因为你正在查看过程缓存,并且早上使用的计划可能不再存在(由于内存压力,服务器/实例重启,手动清除proc缓存等). 获取针对实例(或更具体地说是数据库)执行查询的真正方法是创建SQL跟踪或扩展事件会话.正确创建,其中任何一个都将为您提供您正在寻找的信息. 如果你正在寻找今天早上和今天早上的执行统计数据(即将上述监控实施设置为主动和下次执行的任务是不够的),那么除非已经创建了,否则将没有本地获取此信息的方式. 为了将来参考,请从捕获SQL:StmtCompleted事件的SQL Trace开始.在XE中,它将是sql_statement_completed事件. 在我看来,我不会继续搜索查询执行统计信息的残余,而是开始花时间研究如何重新执行您尝试测量的工作负载.但是在此之前的这段时间,请设置正确的跟踪/监控. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |