Gostaria de capturar detalhes de execução de procedimento armazenado que exigiriam a alteração de procedimentos existentes para executar um INSERT no início e um UPDATE no final.
Lembro-me de encontrar um artigo de blog algum tempo atrás que demonstrava a adição de instruções ao início/fim de procedimentos armazenados, mas não consigo encontrá-lo.
Como eu poderia fazer essas alterações programaticamente em C# ou T-SQL, garantindo que a definição de procedimento armazenado original funcione conforme o esperado?
Editar: No mínimo, quero capturar o usuário que está executando, o nome do procedimento armazenado, os horários de início e término. Os parâmetros e a definição de procedimento armazenado são opcionais.
Eu desaconselharia modificar programaticamente todos os procedimentos armazenados em um banco de dados como esse. Tentar garantir que nenhum caso extremo faça com que uma modificação seja feita erroneamente será bastante difícil.
Em vez de modificar todos os procedimentos armazenados, por que não usar Eventos Estendidos para capturar as informações de seu interesse?
SQLTips tem um bom exemplo de várias maneiras de capturar o histórico de execução de procedimentos armazenados sem modificar os procedimentos armazenados.
Eventos estendidos são ótimos para aprender, mas para capturar todas as métricas de desempenho relevantes, você precisa de meia dúzia a uma dúzia de sessões.
Como o que você está procurando é bastante complicado, vou pular a sugestão de usar ferramentas gratuitas e registrá-las em uma tabela. Basta gastar alguns milhares de dólares em uma ferramenta de monitoramento madura e comprovada que faz tudo isso para você. Você obtém todas as métricas, além de um painel, relatórios, dados históricos, linhas de base etc.
Muitas pessoas inteligentes passaram muito tempo fazendo com que suas ferramentas não fossem ruins. Eles não ganham dinheiro se arrastam seu servidor para baixo enquanto tentam lhe dizer o que há de errado com ele.
Meu favorito pessoal é o SentryOne (não tenho nenhum relacionamento monetário com eles), mas sinto que também posso dar uma chance aos outros.