SQL Server 2008 R2'de uzun süren sorgu veya kilitlenme hakkında bildirim?


15

Kilitlenmeyle ilgili bildirim göndermenin bir yolu olup olmadığını bilmek ister misiniz? Eğer öyleyse hangi sorgular gerekli olacaktır. SQL Server'ın kilitlenmelerle ilgilendiğini anlıyorum, sadece ilgili sorgular hakkında bilgi istiyorum.

Uzun süren sorguları belirlemek için aşağıdakileri buldum:

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; 

Yukarıdaki gitmek için doğru yol, ya da herhangi bir sorgu gösterildiği gibi belirli bir aralıktan daha uzun sürüyor 5 dakika demek olmadığını belirlemek için daha iyi bir yolu var mı bilmek istiyorum?

Teşekkürler

Yanıtlar:


8

SQL 2008 ile, kilitlenmeler ve uzun süren kuyruklar için kullanabileceğiniz yeni bir özellik var: genişletilmiş olaylar . Genişletilmiş olaylar düşük seviyeli nesnelerdir ve profil oluşturma / izleme, uyarılar vb.Gibi diğer yöntemlerden daha az kaynak tüketir.

Bir SQL sunucusu MVP Jonathan Kehayias tarafındandeadlocks bu gönderiye göz atmak için genişletilmiş etkinlikleri kullanmak için .

Bulmak için genişletilmiş etkinlikleri kullanmak için , başka bir SQL sunucusu MVP olan Pinal Dave'inlong running queries bu ayrıntılı gönderisine göz atın .


10

SQL Agent ile her ikisi için de uyarı yapılandırabilirsiniz. Yeni bir uyarı oluşturun ve "SQL Server performans durumu uyarısı" türünü seçin

Uzun süren sorgular için, Nesne "MSSQL $ ÖrnekAdı: İşlemler" ve Sayaç: En Uzun İşlem Çalışma Süresi'ni seçin. Değerleri ve uyarı bildirimi seçeneklerini yapılandırın ve hazırsınız.

Kilitlenmeler için, Nesne "MSSQL $ ÖrnekAdı: Kilitler" ve Sayaç "Kilitlenme Sayısı / sn" dir.

Kilitlenme bildiriminin daha hassas bir şekilde kontrol edilmesini istiyorsanız, şunu kontrol edin: http://www.sqlservercentral.com/articles/Administration/3243/


Uyarıyı önerdiğiniz gibi ayarlamaya çalıştım, ancak iş yalnızca tanımlanmış adımlarım varsa çalışır. İş adımlarını tanımlamadan uyarıyı ayarlamanın bir yolu var mı?
Hasanain

4

SQL2008'iniz varsa @StanleyJohns önerisini tercih ederim. Genişletilmiş etkinlikler tanı aracı olarak kendinizi tanımaya değer ve Jonathon'un An XEvent a Day serisi başlamak için harika bir yerdir.

Kilitlenme için bir alternatif , kilitlenme bilgilerini SQL hata günlüğüne döken izleme bayraklarını (1204 ve 1222) etkinleştirmektir . Her ikisini de etkinleştirin, böylece bilgileri karmaşık kilitlenme zincirlerini anlamayı kolaylaştırabilecek iki farklı biçimde alırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.