【问题标题】:See list of all SQL Queries run on server查看服务器上运行的所有 SQL 查询的列表
【发布时间】:2011-07-27 10:28:38
【问题描述】:

我是否可以运行一个查询来显示特定数据库的某个日期范围内已在服务器上运行的所有查询?

我需要找出上周执行的存储过程传递了哪些参数值

【问题讨论】:

    标签: sql sql-server-2008 ssms


    【解决方案1】:

    没有

    做到这一点的唯一方法是提前设置监控过程。

    监控数据库,例如通过 SQL 探查器,会对性能产生影响,因此在长时间针对实时系统使用它时应谨慎。

    监控此类活动的更好方法是使用调用代码中的日志记录。

    【讨论】:

      【解决方案2】:

      试试下面的:

      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
      

      http://blog.sqlauthority.com/2008/01/03/sql-server-2005-last-ran-query-recently-ran-query/

      【讨论】:

      • 感谢您的回复。我在这个查询中添加了一个 WHERE 子句来过滤我需要的时间。它多次显示我的存储过程,但它显示“CREATE PROCEDURE ...”而不是“EXEC dbo.ProcedureName ....”。
      • 请注意,sys.dm_exec_query_stats 基于查询计划 cache,因此可能不包括在最旧和最新行之间执行的所有 SQL 语句。
      • 您在谈论查询而不是存储过程:-) SqlServer 不会跟踪您需要什么。你需要主动捕捉这个,最简单的就是启动一个profiler
      • 我认为执行存储过程是查询?谢谢马西米利亚诺:)
      • 这不存储动态 sql 或使用的参数,或每个查询的运行时间,但确实有一些非常好的聚合统计信息(总执行运行时间和查询计划读取,当计划创建时,以及上次使用的时间)在可以重用查询计划的情况下。 -- 参见dba.stackexchange.com/questions/35703/…的讨论
      猜你喜欢
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2011-01-15
      相关资源
      最近更新 更多