Selain menggunakan SQL Server Profiler, apakah ada cara untuk melacak prosedur tersimpan yang sedang digunakan, atau setidaknya ketika mereka terakhir kali dieksekusi?
Selain menggunakan SQL Server Profiler, apakah ada cara untuk melacak prosedur tersimpan yang sedang digunakan, atau setidaknya ketika mereka terakhir kali dieksekusi?
Jawaban:
Anda dapat melihat dalam cache rencana untuk mendapatkan ide yang cukup bagus tentang penggunaan Prosedur Tersimpan. Ambil kueri ini, misalnya:
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
Ini akan memberi Anda usecounts
prosedur tersimpan yang di-cache terkait SomeDB
.
Catatan: cache rencana berisi rencana eksekusi. Retensi rencana-rencana ini memiliki banyak faktor yang terlibat. Padahal ini akan memberi Anda ide yang baik tentang apa yang sedang digunakan dan seberapa sering, itu jelas bukan total menjalankan prosedur yang tersimpan dan seberapa sering / kapan mereka dieksekusi.
Anda dapat melihatnya dan juga berisi info last_execution_time
dari setiap prosedur yang tersimpan.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats