Tetikleyicileri kullanmadan veya veritabanının yapısını herhangi bir şekilde değiştirmeden bir SQL Server veritabanını tablodaki değişiklikler için nasıl izleyebilirim? Tercih ettiğim programlama ortamı .NET ve C #.
Herhangi bir SQL Server 2000 SP4 veya daha yeni sürümünü destekleyebilmek istiyorum . Uygulamam, başka bir şirketin ürünü için cıvatalı veri görselleştirmesidir. Müşteri tabanımız binlerce kişidir, bu nedenle her kurulumda üçüncü taraf satıcı tablosunu değiştirdiğimiz gereksinimleri koymak istemiyorum.
By "bir tabloya değiştirir" , masa verilere Acımasız değişikliklere tablo yapısına değiştirir değil.
Nihayetinde, değişikliğin belirli aralıklarla değişiklikleri kontrol etmek yerine, uygulamamda bir olayı tetiklemesini istiyorum.
Gereksinimlerim (tetikleyiciler veya şema değişikliği, SQL Server 2000 ve 2005 yok) göz önüne alındığında en iyi eylem, BINARY_CHECKSUM
işlevi T-SQL'de kullanmak gibi görünüyor . Uygulamayı planladığım yol şudur:
Her X saniyede bir aşağıdaki sorgu çalıştırılır:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Ve bunu saklanan değerle karşılaştırın. Değer değiştiyse, sorguyu kullanarak tabloyu satır satır ilerleyin:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Ve döndürülen sağlama toplamlarını saklanan değerlerle karşılaştırın.