Eu tenho um CLR sp no SQL Server 2008 R2 e quero contar com que frequência ele é chamado para criar uma estatística sobre a qualidade dos dados. (O sp permite a correção manual dos dados).
Como posso deixar um contador subir toda vez que o CLR sp é chamado? Eu necessariamente tenho que mudar o sp em si?
As sugestões são apreciadas.
Não existe um gatilho de procedimento armazenado.
Se você deseja uma contagem absolutamente precisa, sim, altere seu procedimento CLR (ou qualquer wrapper (s) do qual ele é chamado) para gravar uma entrada em um log em algum lugar, sempre.
Se "perto o suficiente" for "bom o suficiente", você poderá consultar periodicamente o DMV
sys.dm_exec_procedure_stats
, que informará oexecution_count
a qualquer momento. Essa contagem geralmente é acumulada desde a última reinicialização do serviço (não tenho certeza se algumas outras atividades, comoRECONFIGURE
ações específicas, redefinem esse DMV como acontece com outras). Portanto, você teria que pesquisá-lo periodicamente e levar em consideração qualquer reinicialização de serviço que tenha ocorrido nesse meio tempo.Aqui está uma consulta simples que demonstra como pesquisar contagens de execução em qualquer ponto no tempo:
Aqui está outro pedaço de código que pode limpar este DMV sem reiniciar:
Há uma lista completa (pelo menos AFAIK) aqui:
http://mattsql.wordpress.com/2012/06/25/dont-believe-everything-you-read-reconfigure-flushes-the-plan-cache/
Como você consolida o que acontece quando houve uma reinicialização do serviço (ou qualquer uma dessas outras atividades de compensação do DMV) é provavelmente uma questão completamente diferente.