我想知道如何获取特定存储过程的
所有执行的
execution_time
。 (使用 Microsoft SQL Server 2016)
我知道通过
dm_exec_procedure_stats
我可以获得有关 last_execution_time
和 execution_count
的信息,但我对(一个存储过程的)每次执行的 execution_time
感兴趣,这些执行被计为 execution_count
。
我得到的是这样的(作为例子):
| name | database_id | execution_count | last_execution_time |
------------------------------------------------------------------
| sp_name1 | db_id1 | 23 | 11.09.2019 hh:mm:ss |
| sp_name2 | db_id1 | 12 | 09.09.2019 hh:mm:ss |
| sp_name3 | db_id2 | 3456 | 11.09.2017 hh:mm:ss |
所以基本上我想要一个查询来获取一个表,该表的一列是过程的名称,另一列是该过程的执行时间,这样行数应该等于过程中的
execution_count
。
我想要的是这样的:
| name | database_id | execution_time |
------------------------------------------------
| sp_name1 | db_id1 | 11.09.2019 hh:mm:ss |
| sp_name1 | db_id1 | dd.mm.yyyy hh:mm:ss |
| sp_name1 | db_id1 | dd.mm.yyyy hh:mm:ss |
| ... | ... | ... |
应该有 23 行。
要获取存储过程的执行历史记录,您可以使用:
分析器:
SQL Server >工具>SQL Server 探查器
导航到文件 > 新跟踪。
跟踪属性 > 单击“事件选择”选项卡 > 在“存储过程”计数器分组中选择
SP:Completed counter
>单击“常规”选项卡保存结果(表/文件)。> 列过滤器:您可以捕获您所在的数据库正在努力>终于运行