Как я могу контролировать базу данных SQL Server для изменений в таблице без использования триггеров или каким-либо образом изменить структуру базы данных? Моя предпочтительная среда программирования .NET и С#.
Я хотел бы иметь возможность поддерживать любой 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);
И сравните возвращенные контрольные суммы с сохраненными значениями.