Какие методы доступны для мониторинга записей базы данных SQL? - PullRequest
3 голосов
/ 23 февраля 2012

Я хотел бы отслеживать 10 таблиц с 1000 записей на таблицу.Мне нужно знать, когда изменилась запись и какая запись.

Я изучил зависимости SQL, однако, похоже, что зависимости SQL смогут только сказать мне, что таблица изменилась, а не какая запись изменилась.Затем мне пришлось бы сравнить все записи в таблице, чтобы найти измененную запись.Я подозреваю, что это будет проблемой для меня, поскольку записи постоянно меняются.

Я также изучил триггеры SQL, однако я не уверен, сработают ли триггеры для мониторинга, какая запись изменилась.

Еще одна мысль, которая у меня возникла, - создать таблицу «Мониторинга», в которую будут добавляться записи через код приложения при каждом изменении записи.

Знаете ли вы какие-либо другие методы?

РЕДАКТИРОВАТЬ: я использую SQL Server 2008

Я изучил сбор данных изменений, который доступен в SQL 2008 и предложен Мартином Смитом.Сбор данных изменений представляется надежным, простым в реализации и очень привлекательным решением.Я собираюсь развернуть CDC в моей базе данных.

Ответы [ 4 ]

5 голосов
/ 23 февраля 2012

Вы можете добавить триггеры и сделать так, чтобы они добавляли строки в таблицу аудита.Они могут проверять первичный ключ измененных строк и даже дополнительную информацию об изменениях.Например, в случае ОБНОВЛЕНИЯ они могут записывать измененные столбцы.

3 голосов
/ 23 февраля 2012

Прежде чем написать / реализовать свой собственный взгляд, взгляните на AutoAudit :

AutoAudit - это утилита Code-Gen для SQL Server (2005, 2008), которая создает триггеры Audit Trailс:

  • Созданные, CreatedBy, Modified, ModifiedBy и RowVersion (увеличивая INT) столбцы в таблице
  • Вставить событие, зарегистрированное в таблицу аудита
  • Обновляет старые и новыезначения, занесенные в таблицу аудита
  • Удалить, записывает все окончательные значения в представление таблицы аудита
  • для восстановления удаленных строк
  • UDF для восстановления истории строк
  • Аудит схемыТриггер для отслеживания изменений схемы
  • Повторное кодирование триггеров, когда Alter Table меняет таблицу
1 голос
/ 28 февраля 2012

Какая версия и редакция SQL Server? Доступен ли сбор данных изменений? - Мартин Смит

Я использую SQL 2008, который поддерживает сбор данных изменений. Сбор данных изменений - очень надежный метод для отслеживания изменений данных, как мне бы хотелось. Спасибо за ответ.

0 голосов
/ 23 февраля 2012

Вот идея. У вас может быть флаг на каждой таблице, который при каждом создании или обновлении записи заполняется текущей датой-временем.Затем, когда вы заметите, что запись изменилась, установите ее флаг снова равным нулю. Таким образом, неизмененные записи имеют нулевое значение в своем поле флага, и вы можете запросить ненулевые значения, чтобы увидеть, какая запись была изменена / создана и когда (и снова установить их флаги на нуль).

...