Son zamanlarda bir veritabanında yürütülen tüm sorguları bul


21

[Ben acemi seviye T-SQL Programcısıyım]
[.. ve umarım sağ yığında değişim sitemindeyim]

Yaptığım tüm soruların bir listesini görmek istiyorum (en azından bugün sabahtan beri yaptığım). Sorguların yürütme zamanları hakkında bir rapor yapmam gerekiyor.

Online arama bana pek yararlı bilgi vermedi. Çevrimiçi bulduğum ve oldukça yakın görünen tek sorgu

SELECT
    deqs.last_execution_time AS [Time], 
    dest.TEXT AS [Query]
 FROM 
    sys.dm_exec_query_stats AS deqs
    CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY 
    deqs.last_execution_time DESC

Bu sorgu bazı tuhaf sonuçlar verdi (birçoğu sprocs). Ayrıca, tüm bu sonuçlar bugün öğleden sonradan itibaren yapılan sorguları göstermektedir (sabahtan sorgulara ihtiyacım var).

Önceki sorularda hiçbir şey bulamadım (benzer bir soru daha önce sorulmuşsa, lütfen bana yönlendirin).

SQL Profiler ile ilgili bazı öneriler gördüm, ancak profiler yalnızca izlemeyi daha önce başlattıysam (bana yanlış yaparsam düzeltin) düzeltmemde yardımcı olacağını düşünüyorum.

Birisi bana sabahtan beri veritabanında yürütülen tüm sorguların bir listesini almak için nasıl devam etmem gerektiğini önerebilir mi (sorgu yürütme zamanları dahil) ..

[Bir şekilde, sorguyu yapan kullanıcının kullanıcı adını da alabilirsem yardımcı olur (gereklilik değil)]

Yanıtlar:


12

Bu sorgu bazı tuhaf sonuçlar verdi (birçoğu sprocs). Ayrıca, tüm bu sonuçlar bugün öğleden sonradan itibaren yapılan sorguları göstermektedir (sabahtan sorgulara ihtiyacım var).

Bunun nedeni, prosedür önbelleğine bakıyorsunuz ve sabah için kullanılan planlar artık orada bulunmayabilir (bellek baskısı, sunucu / örnek yeniden başlatılması, proc önbelleğin el ile temizlenmesi vb. Nedeniyle).

Sorguları bir örneğe (veya daha özel olarak bir veritabanına) karşı çalıştırmanın gerçek yolu, bir SQL İzlemesi veya Genişletilmiş Olaylar oturumu oluşturmaktır. Düzgün bir şekilde oluşturulmuş, bunlardan biri size aradığınız bilgiyi verecektir.

Bu sabah ve yalnızca bu sabahın yürütme istatistiklerini arıyorsanız (yani yukarıda belirtilen izleme uygulamalarını proaktif ve bir sonraki sefer yapılacak görev olarak ayarlamak yeterli değildir), o zaman zaten oluşturulmadıysa, Bu bilgiyi almak için yerel yol .

Gelecekte başvurmak için , SQL: StmtCompleted olayını yakalayan bir SQL Trace ile başlayın . XE'de sql_statement_completedolay olacaktı.

Bence, sorgu yürütme istatistiklerinin kalıntılarını aramaya devam etmek yerine, ölçmeye çalıştığınız iş yükünü nasıl yeniden yürüteceğinizi bulmak için zaman geçirmeye başlayacağım. Ancak bundan önce bu kez, uygun izleme / izlemeyi ayarlayın.


SQL ile filtreleyebilir miyim: StmtCompleted Veri Sütunları?
Kiquenet
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.