SQL Server'da Extended Events ile Değişiklik İzleme: Ne Yapabilir, Ne Yapamaz?
I’m a passionate software engineer specializing in SQL change management, database security, and DevOps automation. With over 17 years of experience in the banking sector, I focus on building tools and processes that make database deployments safer, more auditable, and automated.
As the creator of SQL Change Guard, I develop solutions that use risk scoring and AI-powered code analysis to detect dangerous SQL scripts before they reach production. I’m dedicated to helping teams minimize downtime and data loss through smarter change governance.
When I’m not coding, I enjoy sharing insights about secure development practices, WPF desktop applications, and integrating modern CI/CD pipelines.
Feel free to connect or reach out at info@sqlchangeguard.com
Extended Events, SQL Server'ın en güçlü izleme altyapısı. Ama değişiklik yönetimi bağlamında ne işe yarıyor, nerede sınıra geliyor?
Extended Events Nedir?
Extended Events (XE), SQL Server'da sunucu ve veritabanı düzeyinde olayları izlemek için kullanılan düşük maliyetli, yüksek performanslı bir altyapı. SQL Trace ve Profiler'ın yerini almak üzere SQL Server 2008'den itibaren geliştirildi.
Bir XE session oluşturarak hangi olayları izlemek istediğinizi, bu olayları nerede depolamak istediğinizi ve hangi filtrelerle daraltmak istediğinizi tanımlarsınız.
Değişiklik İzleme İçin Kullanımı
DDL değişikliklerini izlemek için basit bir XE session örneği:
sql
CREATE EVENT SESSION [DDL_Monitoring] ON SERVER
ADD EVENT sqlserver.ddl_database_level_events(
ACTION(
sqlserver.client_hostname,
sqlserver.client_app_name,
sqlserver.nt_username,
sqlserver.sql_text,
sqlserver.username
)
)
ADD TARGET package0.ring_buffer
WITH (MAX_DISPATCH_LATENCY = 5 SECONDS);
ALTER EVENT SESSION [DDL_Monitoring] ON SERVER STATE = START;
Bu session; DDL olaylarını, kim yaptığını, hangi uygulamadan yapıldığını ve çalıştırılan SQL metnini yakalar.
Güçlü Olduğu Yerler
Düşük performans etkisi: XE, SQL Profiler'a kıyasla çok daha az overhead üretir. Yoğun ortamlarda bile güvenle kullanılabilir.
Zengin olay kütüphanesi: Yüzlerce farklı olay tipi izlenebilir. DDL değişikliklerinden login olaylarına, deadlock'lardan sorgu performansına kadar geniş bir yelpaze.
Esnek filtreleme: Belirli kullanıcılar, belirli veritabanları veya belirli olay tipleri için filtre tanımlanabilir.
Ücretsiz: SQL Server'a dahil, ek lisans gerektirmiyor.
Yetersiz Kaldığı Yerler
Analizi karmaşık: XE verileri XML formatında gelir. Bu verileri anlamlı raporlara dönüştürmek için ek sorgu ve analiz gerekir. Teknik bilgisi olmayan birinin XE loglarını okuması neredeyse imkânsız.
Gerçek zamanlı bildirim yok: XE olayları yakalar ama kimseye haber vermez. Alarm mekanizması için ek geliştirme gerekir.
Onay süreci yok: Diğer native araçlar gibi XE de reaktif çalışır. Değişiklik olmadan önce devreye girmez.
Devre dışı bırakılabilir: Sysadmin yetkisine sahip biri session'ı durdurabilir.
Uzun süreli saklama zor: Ring buffer bellekte tutulur, dosyaya yazılırsa yönetilmesi gerekir. Uzun vadeli saklama için ayrı bir mimari gerekir.
Extended Events Ne Zaman Yeterlidir?
Performans analizi, deadlock tespiti veya spesifik sorgular için XE mükemmel. Ama değişiklik yönetimi için tek başına kullanıldığında eksik kalır.
Şunu sormak gerekir: XE loglarını kim bakıyor, ne sıklıkla, anormal bir durum olduğunda kim uyarılıyor?
Bu soruların yanıtı net değilse XE kurulmuş ama işlevsiz demektir.
Sonuç
Extended Events güçlü bir izleme aracı. Ama izlemek yönetmek değil. Değişiklikleri önce onay sürecine almak, risk analizi yapmak ve yetkisiz müdahaleleri anında tespit etmek için XE'nin üstüne bir yönetim katmanı gerekiyor.
Detaylı bilgi için: sqlchangeguard.com
