Fui encarregado de registrar toda a execução do SP para todos os bancos de dados em todos os servidores. Meu plano é criar um pacote SSIS que executará uma consulta e adicionará um conjunto de resultados de todos os servidores a uma tabela.
A consulta que encontrei disponível em muitos fóruns é a seguinte. Que dá resultado do banco de dados ativo do servidor. Eu uso EXEC sp_MSforeachdb
para executá-lo em todos os bancos de dados.
DECLARE @command varchar(1000)
SELECT @command = 'USE ? ;
SELECT Db_name(database_id) databaes_name,
p.name proc_name,
p.type proc_type,
execution_count,
CONVERT(date, getdate()) as ForDate
FROM sys.procedures p
JOIN sys.dm_exec_procedure_stats d
ON p.object_id = d.object_id
WHERE d.database_id = Db_id() order by execution_count desc'
EXEC sp_MSforeachdb @command
O que dá o resultado da maneira abaixo.
|databaes_name | proc_name | proc_type | execution_count |ForDate |
.....................................................................
|MyDB | procedure1|P | 12354 |2016-12-02|
|MyDB | procedure1|P | 13254 |2016-12-02|
|databaes_name | proc_name | proc_type | execution_count |ForDate |
.....................................................................
|MyDB2 | proc1 |P | 1254 |2016-12-02|
O que eu quero na minha consulta é que ela conte toda a execução de todos os SPs e me dê o resultado conforme a tabela abaixo.
|databaes_name | proc_type | execution_count|ForDate |
.........................................................
|MyDB | P | 256088 |2016-12-02|
|MyDB2 | P | 1254 |2016-12-02|