Seperti dikomentari, alat terbaik di sekitar adalah sp_whoIsActive oleh Adam Machanic . Ini dapat digunakan dalam beberapa cara, untuk melihat apa yang sedang berjalan saat Anda meluncurkan skrip atau Anda dapat menjalankannya dalam loop untuk memantau beberapa tindakan tertentu, seperti permintaan yang lambat misalnya.
Untuk menjalankan dalam satu lingkaran, lihat di sini: Cara Mendaftar Aktivitas Menggunakan sp_whoisaktif di dalam Loop
Untuk mendeteksi permintaan yang lambat: Cara Menggunakan sp_WhoIsAktif untuk Menemukan Permintaan SQL Server yang Lambat
Anda dapat langsung menggunakan DMV untuk mendapatkan kueri paling lambat dan bertindak dari sana. Periksa permintaan diagnostik Glenn Berry .
Dan akhirnya Anda dapat menggunakan kueri ini untuk menemukan kueri yang paling memakan waktu. Anda dapat bermain-main dengan dm_exec_query_stats untuk menambahkan lebih banyak data atau bergabung dengan yang lain untuk mendapatkan informasi lebih lanjut. Ketahuilah bahwa dmv akan terhapus dan disegarkan setiap kali server dihidupkan ulang.
SELECT creation_time
,last_execution_time
,total_physical_reads
,total_logical_reads
,total_logical_writes
, execution_count
, total_worker_time
, total_elapsed_time
, total_elapsed_time / execution_count avg_elapsed_time
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;
EDIT
Opsi baru tersedia dari beberapa waktu, First Reponder Kit . Adalah sekumpulan skrip, yang disediakan secara gratis di bawah lisensi MIT oleh tim BrentOzar, yang akan membantu berbagai tugas, termasuk yang diminta oleh OP. Terutama sp_BlitzFirst dan sp_BlitzWho script untuk kasus ini.