存储过程的完整执行历史记录

时间:2019-09-11 09:47:49

标签: sql-server stored-procedures execution-time

我想知道如何为特定存储过程的所有所有执行获取execution_time。 (使用Microsoft SQL Server 2016)

我知道通过dm_exec_procedure_stats我可以获得有关last_execution_timeexecution_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行。

1 个答案:

答案 0 :(得分:0)

要获取存储过程的执行历史,可以使用:

分析器
SQL Server>工具> SQL Server Profiler 导航到文件>新建跟踪。  跟踪属性>单击“事件选择”选项卡>在“存储过程”计数器组中选择SP:Completed counter>单击“常规”选项卡以保存结果(表/文件)。>“列过滤器”:您可以捕获以下数据库:您正在研究>最终运行