Каков наилучший способ аудита УДАЛЕНИЙ журнала?

StackOverflow https://stackoverflow.com/questions/695817

  •  22-08-2019
  •  | 
  •  

Вопрос

Идентификатор пользователя в строке подключения не является переменной и отличается от идентификатора пользователя (например, GUID) вашей программы.Как вы проверяете удаление журналов, если идентификатор пользователя вашей строки подключения является статическим?

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

Это было полезно?

Решение

В SQL Server вы можете использовать CONTEXT_INFO для передачи информации триггеру.

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

Другие советы

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

Обычно мы передаем логический идентификатор пользователя в качестве параметра в каждую хранимую процедуру.Чтобы отслеживать удаления, мы обычно не удаляем строку, а просто отмечаем статус как удаленный и устанавливаем поля LastChgID и LastChgDate соответственно.Для важных таблиц, где мы ведем журнал аудита (копию каждого состояния изменения), мы используем описанный выше метод, и триггер копирует строку в таблицу аудита, LastChgID уже установлен правильно, и триггеру не о чем беспокоиться. о получении удостоверения личности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top