Как реализовать журнал аудита в Sql Server - PullRequest
1 голос
/ 03 марта 2011

У нас есть приложение (asp.net), которое подключается к базе данных SQL Server 2008 R2 с использованием учетных данных для входа, специально настроенных для этого приложения.

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

Нам необходимо вести журнал аудита всех обновлений и удалений в определенных таблицах.Решение также должно быть как можно более минимальным и не требовать вмешательства разработчика.

Самый простой способ, который я могу найти, - это поместить в таблицу (A) триггер, который копирует «старые» данные вТаблица истории (A_History). Проблема в том, что нам нужно знать, кто выполнил действие, для обновления это просто, мы просто посмотрим на имя пользователя вновь вставленной записи.Но для удаления у нас нет доступа к параметру имени пользователя, отправляемому в хранимую процедуру.

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

1 Ответ

4 голосов
/ 03 марта 2011

Отслеживание изменений SQL может быть полезным для вас.

Теперь вам, вероятно, следует сделать несколько других вещей:

  1. Избегайте физического удаления вашего записей.
  2. Добавить активный / удаленный колонка.
  3. Убедитесь, что ваши столы имеют ModifiedByUserID и CreatedByUserID столбцы.
  4. При обновлении пометить его удаляют или иным образом обновите Столбец ModifiedByUserID с идентификатор пользователя вызывающего абонента.

Реализуйте все это, и SQL будет отслеживать каждую версию этих записей ... кто их создал ... кто их изменил ... кто пометил их как удаленные.

...