Як я можу відстежувати базу даних SQL Server щодо змін у таблиці, не використовуючи тригери чи будь-яким чином змінюючи структуру бази даних? Моє бажане середовище програмування .NET і C #.
Я хотів би мати можливість підтримувати будь-який SQL Server 2000 SP4 або новіший. Моя програма - це візуалізація даних, що підлягає детальній розробці, для іншого товару. Наша клієнтська база налічує тисячі, тому я не хочу вимагати вимог щодо того, щоб ми змінювали таблицю сторонніх постачальників при кожній установці.
Під "змінами в таблиці" я маю на увазі зміни в даних таблиці, а не зміни в структурі таблиці.
Зрештою, я хотів би, щоб зміни викликали подію в моїй програмі, замість того, щоб періодично перевіряти зміни.
Найкращий спосіб дії з огляду на мої вимоги (відсутність тригерів чи модифікація схеми, SQL Server 2000 та 2005), здається, використовує BINARY_CHECKSUM
функцію в T-SQL . Я планую реалізувати такий:
Кожні X секунд виконуйте такий запит:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
І порівняйте це із збереженим значенням. Якщо значення змінилося, перейдіть через таблицю за рядком за допомогою запиту:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
І порівняйте повернені контрольні суми із збереженими значеннями.