Cum pot monitoriza o bază de date SQL Server pentru modificări într-o tabelă fără a utiliza declanșatoarele sau modificarea structurii bazei de date în vreun fel? Mediul meu de programare preferat este .NET și C #.
Aș dori să fiu în stare să accept orice SQL Server 2000 SP4 sau mai nou. Aplicația mea este o vizualizare a datelor pentru un produs al unei alte companii. Baza noastră de clienți este în mii, deci nu vreau să trebuiască să introduc cerințe pe care le modificăm masa furnizorilor de la terți la fiecare instalare.
Prin "modificări într-o tabelă" Adică modificări ale datelor din tabel, nu modificări ale structurii tabelului.
În cele din urmă, aș dori ca schimbarea să declanșeze un eveniment în cererea mea, în loc să trebuiască să verifici schimbările la un interval.
Cel mai bun mod de acțiune, dat fiind cerințele mele (fără declanșatori sau modificări ale schemelor, SQL Server 2000 și 2005) pare să fie utilizarea funcției BINARY_CHECKSUM
în T-SQL . Modul pe care intenționez să îl pun în aplicare este acesta:
La fiecare X secunde executați următoarea interogare:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Comparați-le cu valoarea stocată. Dacă valoarea s-a modificat, treceți prin rândul de rând pe rând folosind interogarea:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Comparați sumele de control returnate cu valorile stocate.