我想知道如何为特定存储过程的所有所有执行获取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行。
答案 0 :(得分:0)
要获取存储过程的执行历史,可以使用:
分析器:
SQL Server>工具> SQL Server Profiler
导航到文件>新建跟踪。
跟踪属性>单击“事件选择”选项卡>在“存储过程”计数器组中选择SP:Completed counter
>单击“常规”选项卡以保存结果(表/文件)。>“列过滤器”:您可以捕获以下数据库:您正在研究>最终运行