Bagaimana cara menemukan kueri berjalan lama dengan ID proses, nama proses, waktu masuk, pengguna, waktu mulai dan durasi?


23

Adakah yang bisa membantu saya menemukan detail yang diberikan di bawah ini untuk kueri yang berjalan lama. ProcessID, nama proses, basis data, host, pengguna, waktu proses masuk, waktu mulai permintaan dan durasi permintaan.

Saya mencari kueri atau SP yang memberi saya data ini.

Jawaban:


38

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.


10

Saya sangat merekomendasikan sp_whoisactive . Ini adalah SP pihak ketiga, tetapi dapat memberi tahu Anda semua yang Anda sebutkan di atas, dan lebih dari itu. Ini alat yang luar biasa untuk dimiliki di gudang senjata Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.