Saya ingin tahu apakah ada cara untuk mengirim pemberitahuan di jalan buntu? Jika demikian, pertanyaan apa yang diperlukan. Saya mengerti bahwa SQL Server menangani kebuntuan, saya hanya ingin informasi tentang pertanyaan yang terlibat.
Saya menemukan yang berikut untuk menentukan kueri yang sudah berjalan lama:
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
where total_elapsed_time >= 300000000 --5 min
ORDER BY total_elapsed_time / execution_count DESC;
Saya ingin tahu apakah cara di atas adalah cara yang tepat, atau adakah cara yang lebih baik untuk menentukan apakah ada kueri yang membutuhkan waktu lebih lama dari interval tertentu, katakan 5 menit seperti yang ditunjukkan?
Terima kasih
Saya akan menyukai saran @StanleyJohns jika Anda memiliki SQL2008. Acara yang diperpanjang patut dibiasakan sebagai alat diagnostik dan Jonathon's An XEvent a Day seri adalah tempat yang tepat untuk memulai.
Alternatif untuk kebuntuan adalah mengaktifkan jejak flag 1204 dan 1222 , yang membuang informasi kebuntuan ke log galat SQL. Aktifkan keduanya, sehingga Anda mendapatkan informasi dalam dua format berbeda, yang dapat membuatnya lebih mudah untuk memahami rantai kebuntuan yang kompleks.
sumber