我想捕获存储过程执行细节,这需要更改现有过程以在开始时执行插入并在结束时执行更新。
记得前段时间找到一篇博文,演示在存储过程的开头/结尾添加语句,但是找不到。
我如何在 C# 或 T-SQL 中以编程方式进行这些更改,以确保原始存储过程定义按预期工作?
编辑:至少我想捕获用户执行、存储过程名称、开始和结束时间。参数和存储过程定义是可选的。
我想捕获存储过程执行细节,这需要更改现有过程以在开始时执行插入并在结束时执行更新。
记得前段时间找到一篇博文,演示在存储过程的开头/结尾添加语句,但是找不到。
我如何在 C# 或 T-SQL 中以编程方式进行这些更改,以确保原始存储过程定义按预期工作?
编辑:至少我想捕获用户执行、存储过程名称、开始和结束时间。参数和存储过程定义是可选的。
我建议不要像那样以编程方式修改数据库中的所有存储过程。试图确保没有边缘情况导致错误地进行修改将被证明是非常困难的。
与其修改所有存储过程,不如使用扩展事件来捕获您感兴趣的信息。这将
SQLTips有一个很好的例子,说明了在不修改存储过程的情况下捕获存储过程执行历史的几种方法。
扩展事件非常适合学习,但为了捕获每一个相关的性能指标,您需要查看六到十几个会话。
由于您正在寻找的内容非常复杂,我将跳过建议使用免费工具并将它们记录到表中。只需花几千美元购买一个成熟的、经过验证的监控工具,它就可以为您完成这一切。您可以获得所有指标,以及仪表板、报告、历史数据、基线等。
许多聪明人花了很多时间让他们的工具不那么糟糕。如果他们在试图告诉您服务器出了什么问题时拖累了您的服务器,他们就不会赚钱。
我个人最喜欢的是SentryOne(我与他们没有任何金钱关系),但也想给其他人一个机会。