SQL Server Trace Flag
Trace Flag, Microsoft SQL Server’ın belirli sorunlarını teşhis etmek için davranışlarını değiştirmek ve performansı artırmak için kullanılan seçenekleridir. Trace Flag’ler, etkinleştirilebilen veya devre dışı bırakılabilen ikili değerler olarak temsil edilir ve genellikle SQL Server’ın performansına ve güvenliğine ayar yapmak için kullanılır.
Bunun yanı sıra, bazı Trace Flag’ler SQL Server’ın yeni sürümlerinde bir özelliğe dönüştürülebilir. Örneğin, 1117 trace flag, belirli koşullar altında bazı tempdb veritabanı performans sorunlarını çözmeye yardımcı olur. Ancak, bu izleme bayrağı işlevi Microsoft SQL Server 2016 ve daha yüksek sürümlerde varsayılan bir seçenek haline gelmiştir.
Trace Flag, sistemin varsayılan davranışını değiştirmeye olanak tanırken, yanlış kullanımları beklenmedik davranış değişikliklerine veya performans sorunlarına yol açabileceğinden dikkatli bir şekilde seçilmeleri önemlidir ve etkinleştirildikten sonra sistem üzerindeki etkileri izlenmelidir. Bu yazıda, SQL Server trace flag’lerin nasıl etkinleştirileceğine ve kullanım alanlarına değineceğiz.
Trace Flag nasıl aktif edebiliriz?
Bunu iki farklı yolla gerçekleştirebiliriz.
- Startup Parameters
SQL Server Configuration Manager’dan SQL Services alanında SQL Server’a sağ tıklayarak Properties alanında Startup Parameters tıklıyoruz.
Açılan ekranda Trace flag eklerken Specify a startup parameter kısmına resimde görüldüğü gibi flag kodundan önce başına –T yazılıp Add butonuna tıklanılır.

Add butonuna tıkladıktan sonra Existing parameters alanında trace flag eklenmiştir. Devamında Apply butonuna tıklıyoruz.
Startup Parameters kullanarak Trace Flag’ ler eklerken aktif olabilmesi için Service Restart edilmesi gerekmektedir restart edildikten sonra devreye girecektir.

2.DBCC TRACEON söz dizimini kullanarak
Belirli bir Trace Flag etkinleştirmek için aşağıdaki söz dizimi kullanılabilir.(Örneğin; 1117)
DBCC TRACEON(1117, -1)
GO

Trace Flag’lerin etkin olup olmadığından emin olmak için aşağıdaki komutu kullanabiliriz:
Startup parameters’da olduğu gibi Trace Flag’leri aktif etmek için Restart etmememiz gerekmektedir, restart ettiğimizde Trace Flag devre dışı kalacaktır.
DBCC TRACESTATUS(-1)
GO

DBCC TRACEOFF değimini kullanarak da Trace Flag’leri devre dışı bırakabilirsiniz.
Bazı önemli Trace Flag’lere değinecek olursak:
Trace Flag 1117, her veritabanındaki tüm veri dosyalarının tekdüze bir şekilde büyümesini zorlar. Veri dosyası tekdüze bir şekilde büyüdüğünde, G/Ç daha iyi olur ve SQL Server’daki okuma ve yazma işlemlerinin hızını artırır.
Tarce Flag 1204, belirli bir oturum tarafından tutulan kilitler hakkında bilgi verir, bu da kilitleme sorunlarını gidermek için yararlı olabilir.
Trace Flag 3226, yedekleme (backup) işlemlerinin başarılı bir şekilde tamamlandığı her durumda, bu olayın SQL Server hata günlüğünde (error log) kaydedilmesini sağlar.
Trace Flag 8048, yüksek CPU kullanımı durumunda, SQL Server’ın CPU kullanımını optimize etmek için hızlı bir çözüm sağlayabilir.
Trace flag 1222, Microsoft SQL Server’da bir kilitlenme (deadlock) durumunun ayrıntılı raporlarını sağlamak için kullanılan bir trace flag’dir. Bu trace flag etkinleştirildiğinde, SQL Server, meydana gelen kilitlenme olayları hakkında daha kapsamlı bilgi sağlar ve bu bilgileri SQL Server hata günlüğüne (error log) kaydeder.
Trace Flag 4199, Microsoft SQL Server’da query optimizer (sorgu optimizasyoncusu) tarafından yapılan değişikliklerin etkisini kontrol etmek için kullanılan bir trace flag’dir. SQL Server, her yeni sürümde sorgu optimizasyon tekniklerini ve stratejilerini iyileştirir ve bazı yeni optimizasyon özellikleri varsayılan olarak etkinleştirilir.
Bu yazıda, Trace Flag’lerin ne olduğunu, SQL Server’da nasıl kullanıldığını, etkinleştirme yöntemlerini ve çeşitli kullanım alanlarını inceledik. Trace Flag’ler, SQL Server yönetiminde performans iyileştirmeleri yapmak, sorgu optimizasyonlarını yönetmek ve hata ayıklama süreçlerini hızlandırmak için güçlü araçlardır. Doğru kullanıldığında, bu araçlar veritabanı yöneticilerine büyük faydalar sağlayarak, sistem verimliliğini artırabilir ve olası sorunların çözümünü kolaylaştırabilir.
Kaynak
https://blog.sqlauthority.com/2016/05/23/sql-server-trace-flag-introduction/
https://www.sqlservercentral.com/articles/sql-server-trace-flags-complete-list-3
https://www.geopits.com/blog/trace-flags-in-sql-server-for-performance-optimization.html