SQL Server Tablolarında Değişiklikleri İzleme
SQL Server veritabanınızda bir tabloya yapılan değişiklikleri izlemek için bir yol arıyor, ancak tetkik kullanmaktan veya veritabanı yapısında herhangi bir değişiklik yapmaktan kaçınmak mı istiyorsunuz? Bu, özellikle tabloların yapısı üzerinde kontrolünüz olmayan üçüncü taraf ürünlerle entegre uygulamalar geliştirirken birçok geliştiricinin karşılaştığı yaygın bir sorundur. Bu kılavuzda, SQL Server 2000 SP4 ve daha yenisi için uygun olan T-SQL’deki BINARY_CHECKSUM
fonksiyonunu kullanarak basit bir çözüm sunacağız.
Zorluk
Daha büyük bir çerçeve içinde bir veri görselleştirme aracı geliştiriyor olabilirsiniz ve mevcut tablo yapılarında tetkik spesifikasyonları veya değişiklikler yapmadan tablo verilerinde değişiklikleri kontrol etmek istiyorsunuz. Buradaki ihtiyaç etkili bir şekilde herhangi bir değişikliği tespit etmek ve uygulamanızdaki tepkileri tetiklemek, performansı etkilemeden gerçekleştirmektir.
Temel Gereksinimler:
- Verilerdeki değişiklikleri izleyin, tablo yapısını değil.
- Tetkik veya veritabanı değişikliklerinden kaçının.
- SQL Server 2000 SP4 ve daha yeni sürümlerle uyumlu bir yöntem kullanın.
- Yüksek sayıda kullanıcıya hitap ederek etkili bir performans sağlayın.
Çözüm: BINARY_CHECKSUM
Verilen kısıtlamalar dikkate alındığında en iyi yaklaşım, T-SQL’de mevcut olan BINARY_CHECKSUM
fonksiyonunu kullanmaktır. Bu fonksiyon, tüm satır için bir kontrol toplamı hesaplamanızı sağlar ve bu kontrol toplamlarını birleştirerek tablo veri değişikliklerini verimli bir şekilde izleyebilirsiniz.
Adım Adım Uygulama
-
Bir Zamanlayıcı Kurun: Değişiklikleri kontrol etmek için bir aralık belirleyin (her X saniyede bir). Bu yaklaşım, sunucu üzerinde yük oluşturmadan verileri takip etmeye yardımcı olur.
-
Kontrol Toplamı için İlk Sorguyu Oluşturun: Tablodaki tüm satırlar için bir kontrol toplamı hesaplamak üzere aşağıdaki T-SQL sorgusunu kullanın:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK);
- CHECKSUM_AGG: Bu fonksiyon, belirtilen tablodaki tüm satırlar için toplam kontrol toplamını temsil eden tek bir değer döndürür.
-
İlk Kontrol Toplamını Saklayın: Bu sorguyu çalıştırın ve dönen kontrol toplamı değerini saklayın. Bu değer, sonraki kontroller sırasında karşılaştırma için referansınız olacaktır.
-
Değişiklikleri İzleyin: Tanımladığınız zamanlayıcıda, kontrol toplamı sorgusunu tekrar çalıştırın ve yeni üretilen değeri saklanan değerle karşılaştırın:
- Eğer kontrol toplamları farklı ise, bu, tabloda bazı verilerin değiştiği anlamına gelir.
- Hangi satırların değiştiğini belirlemek için artık aşağıdaki sorguyla ilerleyebilirsiniz:
SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK);
-
Satır Kontrol Tabanlarını Karşılaştırın: Bu sorgudan alınan kontrol toplamlarını toplayın ve bunları daha önce kaydedilmiş satır değerlerinizle karşılaştırın.
Sonuç
Bu stratejiyi uygulayarak, tetkik veya herhangi bir müdahaleci değişiklik yapmadan SQL Server tablolarınızı değişiklikler için başarılı bir şekilde izleyebilirsiniz. BINARY_CHECKSUM
yöntemini kullanarak veri değişikliklerini etkili bir şekilde tespit edebilir ve bu değişikliklere uygulamanız içerisinde programatik olarak tepki verme yeteneğine sahip olursunuz.
Bu basit ama etkili izleme çözümü, uygulama performansınızı optimize ederken kritik verilerinize dair kapsamlı bir genel bakış sağlamanızı güvence altına alabilir—yüksek talep gören ortamlarda bile.
Bugün bu yöntemi uygulama iş akışlarınıza entegre etmeye başlayın ve SQL Server veri izleme görevleriniz üzerinde daha iyi kontrol sahibi olun!