Veritabanı Değişikliklerinde Çakışma Yönetimi: İki Geliştirici Aynı Nesneyi Değiştirdiğinde
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
İki geliştirici aynı stored procedure'ü aynı anda değiştiriyor. Biri önce production'a attı. Diğeri arkasından attı. Birincinin değişikliği ezildi. Kimsenin haberi yok.
Bu senaryo her gün yaşanıyor.
Çakışma Nasıl Oluyor?
Versiyon kontrolü olmayan ya da değişiklik yönetimi olmayan ortamlarda çakışma kaçınılmaz.
Geliştirici A sabah stored procedure'ü indirdi, değiştirdi. Geliştirici B öğlen aynı procedure'ü indirdi, farklı bir şey değiştirdi. Geliştirici A öğleden sonra production'a attı. Geliştirici B akşam production'a attı. A'nın değişikliği kayboldu.
Her ikisi de "deployment yaptım, tamam" diye düşünüyor. Ama production'da olan B'nin son hali.
Çakışmanın Sonuçları
Sessiz kayıp: A'nın değişikliği silinmez, ezilir. Hata mesajı yok. Sadece A'nın yaptığı iş yok oldu.
Geç fark edilme: Çakışma saatler, bazen günler sonra fark edilir. O ana kadar problem yaratmış olabilir.
Kimin doğru olduğu bilinmez: İki versiyondan hangisi doğru? Hangisi önce gitti? Kayıt yoksa bilinmez.
Çakışmayı Önleme Yöntemleri
Check-out mekanizması
Bir nesne üzerinde çalışılmaya başlandığında sistem bunu işaretler. Başka biri aynı nesneyi almaya çalışırsa "bu nesne şu an kullanımda" uyarısı alır.
Versiyon karşılaştırması
Deployment öncesinde production'daki mevcut versiyon ile yeni versiyon karşılaştırılır. Eğer production'daki versiyon son indirilen versiyondan farklıysa çakışma var demektir.
sql
-- Production'daki stored procedure'ün son değişiklik tarihini kontrol et
SELECT
name AS ProcedureAdi,
modify_date AS SonDegisiklikTarihi
FROM sys.procedures
WHERE name = 'HedefProcedure';
Deployment öncesinde bu tarihi not alın. Eğer son indirme tarihinizden sonraki bir tarihe işaret ediyorsa biri değiştirmiş, çakışma riski var.
Deployment kilidi
Bir deployment başladığında o nesneye başka deployment engellenir. Birincisi tamamlanana kadar ikincisi bekler.
Çakışma Yaşandığında Ne Yapılmalı?
İki versiyonun farkı analiz edilmeli, her iki değişiklik de anlaşılmalı ve birleştirilmiş bir versiyon oluşturulmalı. Bu süreç hem A hem B'nin katılımıyla yapılmalı.
Çakışma kayıt altına alınmalı. Neden oldu, nasıl çözüldü, tekrarlanmaması için ne yapılabilir?
Sonuç
Çakışma yönetimi değişiklik yönetiminin göz ardı edilen boyutlarından biri. Check-out mekanizması ve versiyon karşılaştırması bu sorunu büyük ölçüde ortadan kaldırır.
Detaylı bilgi için: sqlchangeguard.com
