Além de usar o SQL Server Profiler, existe alguma maneira de rastrear quais procedimentos armazenados estão sendo usados ou pelo menos quando eles foram executados pela última vez?
Além de usar o SQL Server Profiler, existe alguma maneira de rastrear quais procedimentos armazenados estão sendo usados ou pelo menos quando eles foram executados pela última vez?
Respostas:
Você pode procurar no cache do plano para ter uma boa idéia do uso do Procedimento Armazenado. Tome esta consulta, por exemplo:
select
db_name(st.dbid) as database_name,
object_name(st.objectid) as name,
p.size_in_bytes / 1024 as size_in_kb,
p.usecounts,
st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc
Isso fornecerá os usecounts
procedimentos armazenados armazenados em cache pertencentes a SomeDB
.
Nota: o cache do plano contém os planos de execução. Essa retenção desses planos tem muitos fatores envolvidos. Considerando que isso lhe dará uma boa idéia do que está sendo usado e com que frequência, definitivamente não é o total em execução de procedimentos armazenados e com que frequência / quando eles foram executados.
Você pode dar uma olhada nisso, além de conter informações last_execution_time
de todos os procedimentos armazenados.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats