我在 SQL Server 2008 R2 中有一个 CLR sp,我想计算它被调用的频率,以便创建关于数据质量的统计信息。(sp 允许手动更正数据)。
每次调用 CLR sp 时,如何让计数器上升?我是否必须更改 sp 本身?
建议表示赞赏。
我在 SQL Server 2008 R2 中有一个 CLR sp,我想计算它被调用的频率,以便创建关于数据质量的统计信息。(sp 允许手动更正数据)。
每次调用 CLR sp 时,如何让计数器上升?我是否必须更改 sp 本身?
建议表示赞赏。
没有存储过程触发器之类的东西。
如果您想要一个绝对准确的计数,那么可以,每次都更改您的 CLR 过程(或从中调用它的任何包装器)以将条目写入某处的日志。
如果“足够接近”就是“足够好”,那么您可以定期轮询 DMV
sys.dm_exec_procedure_stats
,它会execution_count
随时告诉您。此计数通常是自上次服务重新启动以来累积的(我不确定某些其他活动(例如特定RECONFIGURE
操作)是否会像其他一些活动一样重置此 DMV)。因此,您必须定期轮询它,并考虑在此期间发生的任何服务重启。这是一个简单的查询,演示如何在任何给定时间点轮询执行计数:
这是另一段代码,可以在不重新启动的情况下清除此 DMV:
这里有一个完整的(至少是 AFAIK)列表:
http://mattsql.wordpress.com/2012/06/25/dont-believe-everything-you-read-reconfigure-flushes-the-plan-cache/
当服务重新启动(或任何其他 DMV 清除活动)时,您如何整合发生的事情可能是一个完全不同的问题。