SQL Server Profiler Kullanarak Uzun Süren Sorguları Bulmak ve Tablo Olarak Kaydetmek
Sorgularınız yavaş çalışıyor ve hangi sorguların yavaş çalıştığını tespit etmek istiyorsunuz. SQL Server Profiler kullanarak bu işlemi gerçekleştirebilirsiniz. Aşağıdaki gibi SQL Server Profiler’ı Run As Administrator ile açıyoruz.
File->New Trace diyoruz.
Açılan ekranda Server Name kısmından hangi instance’daki veritabanını izleyeceksek o instance bilgisini yazıyoruz ve Connect diyoruz.
Açılan ekranda Event Selection’a geliyoruz ve aşağıdaki gibi Sadece RPC:Completed ve SQL:BatchCompleted’ı seçiyoruz ve diğerlerinden seçimi kaldırıyoruz. Daha sonra aşağıdaki Show all columns’a tıklıyoruz ve RPC:Completed ve SQL:BatchCompleted üzerindeki seçimi iptal edip tekrar seçiyoruz.(Böylelikle Show all columns’a tıkladıktan sonra gelen kolonlarıda seçmiş oluyoruz.)
Daha sonra Column Filters’a tıklıyoruz ve aşağıdaki gibi ilgili DatabaseName’e tıklayarak Like kısmına %% işaretleri arasına veritabanı isminizi yazmalısınız.
OK’e tıklıyoruz ve ardından tekrar Column Filters’a tıklıyoruz. Duration kısmından aşağıdaki gibi Greater than or equal’e 1000 yazıyoruz.(milisaniye cinsindendir. 1000 yazdığımız için 1 saniyeden uzun süren sorguları yakalayacağız). OK’e tıklıyoruz ve ardından Run diyoruz.
Biz bu trace’de bir veritabanına gelen ve 1 saniyeden uzun süren sorguları yakalamak için filtre oluşturduk. Siz ihtiyacınıza göre;
HostName’i kullanarak şu uygulama sunucusundan,
LoginName’i kullanarak şu loginden gelen sorguları,
TextData’yı kullanarak içinde şu ifade geçen sorguları şeklinde arama yapabilirsiniz. Diğer parametreleri kullanarak ta filtreleme yapabilirsiniz. Ben bu makalede en çok kullanılanları paylaştım.
Peki trace’i bir süre izlediniz ama trace üzerinden okuma yapmak çok kolay olmayabilir. Bu yüzden trace’i bir tablo olarak veritabanına import etmek isteyebilirsiniz.
Trace’i durduruyoruz ve File->Save As->Trace Table… diyoruz.
Açılan ekrandan kaydedeceğim veritabanı hangi instance üzerindeyse onu seçiyoruz.
Açılan ekrandan Database kısmından trace’i kaydedeceğimiz veritabanını seçiyoruz ve Table: kısmındanda trace tablosuna vereceğimiz ismi yazıyoruz ve ok’e tıklıyoruz. Daha sonra ilgili veritabanına giderek trace tablosunu istediğimiz gibi sorgulayabiliriz.
Trace’i tablo olarak kaydettikten sonra Database Engine Tuning Advisor(DTA) ‘a analiz ettirebilirsiniz. “Database Engine Tuning Advisor(DTA)” isimli makaleye göz atmak isteyebilirsiniz.