Bagaimana saya bisa memonitor database SQL Server untuk perubahan tabel tanpa menggunakan pemicu atau memodifikasi struktur database dengan cara apa pun? Lingkungan pemrograman pilihan saya adalah .NET dan C #.
Saya ingin dapat mendukung SQL Server 2000 SP4 atau yang lebih baru. Aplikasi saya adalah visualisasi data untuk produk perusahaan lain. Basis pelanggan kami ada ribuan, jadi saya tidak ingin harus memasukkan persyaratan bahwa kami memodifikasi tabel vendor pihak ketiga di setiap instalasi.
Dengan "perubahan ke tabel" Maksudku perubahan data tabel, bukan perubahan pada struktur tabel.
Pada akhirnya, saya ingin perubahan untuk memicu suatu peristiwa dalam aplikasi saya, daripada harus memeriksa perubahan pada suatu interval.
Tindakan terbaik yang diberikan persyaratan saya (tidak ada pemicu atau modifikasi skema, SQL Server 2000 dan 2005) tampaknya menggunakan BINARY_CHECKSUM
fungsi dalam T-SQL . Cara saya berencana untuk mengimplementasikannya adalah ini:
Setiap X detik jalankan kueri berikut:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Dan membandingkannya dengan nilai yang disimpan. Jika nilai telah berubah, buka baris tabel demi baris menggunakan kueri:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Dan bandingkan checksum yang dikembalikan dengan nilai yang disimpan.