SQL Server Profiler, SQL Server’a gelen ve giden tüm işlemleri (sorgular, oturumlar, hata mesajları, deadlocklar, login denemeleri vb.) gerçek zamanlı olarak izlemek ve kaydetmek için kullanılan bir grafik arayüze sahip araçtır.
Profiler, sistemde neler olup bittiğini ayrıntılı şekilde görmenizi sağlar. Özellikle performans sorunları, yavaş sorgular, bekleme türleri, bloklamalar, erişim hataları gibi problemleri analiz etmek için oldukça etkilidir.
SQL Server Management Studio (SSMS) üzerinden:
Tools> SQL Server Profiler sekmesine tıklanır veya Windows başlat bölümünden SQL Server Profiler ilgili sql serverla uyumlu profiler yapısına girilir.


Profiler bölümüne girdikten sonra ok işaretiyle belirtilmiş olan yerden New Trace denilip bağlantı sağlamak istediğimiz sunucu seçimi yapılır.


Gelen ekranda bölümlerin ne işe yaradığına değinelim.

Trace Name: İzlemeye anlamlı bir isim verilir. Biz Takip23 ismini vermiş olduk.
Save to file: Sonradan incelemek için dosyaya kaydedebilirsin (.trc uzantılı).
Use the template: Microsoft’un sunduğu hazır şablonlardan birini kullanabilir ya da kendin özelleştirebilirsin (en sık: TSQL_Replay, TSQL_Duration).
Blank | Tamamen boş bir yapı getirir. Her şeyi manuel olarak sen seçersin. Gelişmiş kullanıcılar özelleştirme için tercih eder. |
Tuning | Performans ayarı (tuning) yapılırken kullanılır; CPU, duration ve reads yüksek olan sorguları ortaya çıkarır. |
TSQL_Duration | Özellikle uzun süren sorguları tespit etmek için; Duration, CPU, Reads gibi kolonlar içerir. |
Events Selection bölümünde hangi tür olayları izleyeceğini seçersin. Aşağıda en kritik kategorileri açıklıyorum:
Aşağıdaki işlemlerin aynısını extented event ile yapabiliyoruz. Başlıklar hemen hemen aynı.
ÖNEMLİ EVENT CLASS KATEGORİLERİ
A. TSQL
Bu kategori, sorgu düzeyindeki işlemleri gösterir.
Event Class | Açıklama |
---|---|
SQL:BatchStarting | Sorgu çalıştırılmaya başlandığında tetiklenir |
SQL:BatchCompleted | Sorgu tamamlandığında tetiklenir |
RPC:Completed | Stored Procedure (SP) tamamlandığında gösterilir |
Yukarıdaki ifadeler özellikle yavaş sorgu takibi için seçilmelidir.
B. Stored Procedures
Event Class | Açıklama |
---|---|
SP:Starting | Bir SP çalıştırılmaya başlandığında |
SP:Completed | SP başarıyla tamamlandığında |
C. Performance
Event Class | Açıklama |
---|---|
Showplan XML | Query Execution Plan’ı XML olarak gösterir |
Execution Plan | Sorgunun nasıl çalıştığını görsel olarak verir |
D. Errors and Warnings
Event Class | Açıklama |
---|---|
User Error Message | Kullanıcıya gösterilen hata mesajları |
Exception | SQL hataları (örneğin syntax hataları) |
Attention | Sorguların kesilmesi (örneğin SSMS’den durdurulması) |
Yukarıdaki ifadeler hata ayıklama için mutlaka seçilmeli.
E. Locks
Event Class | Açıklama |
---|---|
Lock:Acquired | Kaynak üzerinde kilit alındı |
Lock:Released | Kilit serbest bırakıldı |
Bloklama ve deadlock analizi için gereklidir.
F. Security Audit
Event Class | Açıklama |
---|---|
Audit Login | Giriş denemeleri |
Audit Logout | Oturum kapanışları |
Audit Failed Login | Başarısız giriş denemeleri |
Yukarıdaki ifadeler kullanıcı güvenliği takibi için uygundur.
KOLONLAR (COLUMNS) VE FİLTRELEME
En Faydalı Kolonlar:
Kolon Adı | Anlamı |
---|---|
TextData | Gerçek SQL komutu |
Duration | Sorgunun çalışma süresi (milisaniye) |
CPU, Reads, Writes | Sistem tüketim bilgisi |
LoginName | Sorguyu çalıştıran kullanıcı |
ApplicationName | Bağlantıyı kuran uygulama adı |
HostName | İstemci bilgisayar adı |
SPID | SQL oturum numarası |
Bir örnek üzerinden konunun daha iyi anlaşılmasını sağlayalım. Hatalı bağlantı yapan kullanıcıları Audit Login Failed ile bulmaya çalışacağız. Bunun için ilgili trace seçilir.

Column Filters kısmından genel kısıtlamamızı daha da minimize edebiliriz.

Gerekli filtreleme yapıldıktan sonra Run denilip oluşturduğumuz yapı çalıştırılır.

Şimdi filtreleme kısmına eklediğimiz kullanıcı haricinde başka bir kullanıcı ile hatalı giriş yapalım.

Filtreleme kısmında belirttiğimiz kullanıcı dışında bir kullanıcı ile giriş yaptığımızda Profiler ekranına düşmediğini görmüş oluyoruz.

Şimdi filtreleme kısmına eklediğimiz kullanıcı ile hatalı giriş yapalım.

İlgili kullanıcının Profiler ekranına düştüğünü görmekteyiz.

Bu gibi buna benzer birden fazla işlem için Profiler oluşturulur.
Bir başka örnekte uzun süren sorguları yakalamak için iki parametre genellikle kullanılır. SQL:BatchCompleted ve RPC:Completed ifadeleridir. Bu ifadeler seçildikten sonra Filter kısmında belirli bir ms üzerinde olan değerleri yakalamasını ve ayrıca hangi veritabanı üzerinde bu ifadelerin çalışacağını belirleyebiriz.


Exclude rows that do not contain values değeri ile yazılan ifadeyi onaylıyorum.
Yukarıdaki ifadelerden sonra ilgili veritabanına select seçtiğimde herhangi bir sonuç dönmemiş oldu.

wait for ile bir sorgu çalıştırdığımda 5 saniye üzeri olduğu için Trace ekranımıza sorgumuzun düştüğünü görmüş olacağız.

Yukarıdaki işlem sonucunu bir tabloya kaydetmek için aşağıdaki resimde bulunan ilgili yere tıklanır.

Bağlantı sağlanacak instance’a connect olunur.

Seçilen veritabanına belirtilen tablo ismiyle bağlantı sağlanan instance üzerine kaydedilir.

HANGİ DURUMLARDA PROFILER KULLANILIR
Senaryo | Profiler Kullanımı |
---|---|
Yavaş çalışan sorgular | Duration, Reads, CPU kolonlarını analiz et |
Deadlock/blokaj analizi | Locks, Deadlock graph, Blocking chain |
Stored Procedure izleme | SP:Starting, SP:Completed |
Hata yakalama | Errors and Warnings kategorisi |
Kim ne zaman bağlanmış | Audit Login, Audit Logout |
DİKKAT EDİLMESİ GEREKENLER
Risk / Sorun | Açıklama |
---|---|
Yüksek kaynak kullanımı | Profiler canlı izleme yaparken sunucuya yük bindir |
Canlı sistemde uzun süre çalıştırma | Uygun filtreler olmadan üretim ortamında uzun süreli profiler kullanılması önerilmez. |
Daha modern alternatif: | Extended Events daha hafif ve esnektir |
Bu makalede Profiler konusunu detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..
“Her insan hata eder. Hata işleyenlerin en hayırlıları tevbe edenlerdir.” (Tirmizî)