Аудит изменений записей в базах данных SQL Server - PullRequest
3 голосов
/ 16 марта 2011

Используя только технологии Microsoft (MS SQL Server, C #, EAB и т. Д.), Если вам необходимо отслеживать изменения, внесенные в записи в базе данных, какую стратегию вы будете использовать? Триггеры, АОП на DAL, Другое? А как вы будете отображать собранные данные? Есть ли образец об этом? Существует ли какой-либо инструмент или структура, помогающая реализовать решение такого типа?

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Проблема с изменением сбора данных заключается в том, что он недостаточно гибок для реального аудита.Вы не можете добавить нужные вам столбцы.Кроме того, он по умолчанию сбрасывает записи каждые три дня (вы можете изменить это, но я не думаю, что вы можете хранить их вечно), поэтому вам нужно выполнить задание по переносу записей в реальную таблицу аудита, если вам нужно сохранить данные длядолгое время, которое типично для необходимости аудита записей (мы никогда не сбрасываем наши записи аудита).

Я предпочитаю триггерный подход.Вы должны быть осторожны при написании триггеров, чтобы гарантировать, что они будут захватывать данные, если несколько записей будут изменены.У нас есть две таблицы для каждой проверяемой таблицы: одна для хранения даты и времени пользователя или процесса, который предпринял действие, а другая для хранения старых и новых данных.Поскольку мы выполняем множество процессов записи, это очень важно для нас.Если кто-то сообщает об одной плохой записи, мы хотим видеть, был ли процесс внес изменения, и если да, то какие другие записи также могли быть затронуты.

Во время создания процесса аудита создайте сценарии для восстановления набора проверенных данных до старых значений.Это гораздо проще сделать, когда под ружьем все исправить, если вы уже настроили это.

2 голосов
/ 16 марта 2011

Sql Server 2008 R2 имеет эту встроенную функцию поиска информации об изменениях в книгах в Интернете

1 голос
/ 16 марта 2011

Это, вероятно, не популярное мнение, но я все равно его выброшу.

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

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

...