Предложения по внедрению таблиц аудита в SQL Server?

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

Несмотря на свою эффективность, данные в таблице аудита не являются наиболее полезными или простыми в отчете. Мне интересно, если у кого-нибудь есть лучший метод для аудита изменений данных?

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

 user1706009 февр. 2009 г., 19:38
Следует отметить, что эта функция доступна только в редакции Enterprise.
 andyp29 авг. 2008 г., 19:42
SQL Server 2008 имеет некоторую встроенную поддержку с новой функцией захвата данных изменений <msdn.microsoft.com/en-us/library/bb522489.aspx>
 BJury01 окт. 2013 г., 12:06
Функция сбора данных об изменении также, кажется, больше предназначена для обеспечения того, чтобы объекты приложений соответствовали базе данных, а не решению для аудита. (Например, он хранит только изменения за 2 дня.) Вам все равно нужно опросить изменения и записать их в таблицу, так что вы можете просто создать и использовать триггеры для записи в центральную таблицу аудита, как показано ниже. О, и URL выше не работает, используйте этоссылка на сайт.

Ответы на вопрос(6)

Я нашел эти две ссылки полезными:

Использование CLR и единой таблицы аудита.
Создание общего триггера аудита с SQL 2005 CLR

Использование триггеров и отдельной таблицы аудита для каждой проверяемой таблицы.
Как я могу проверить изменения в данных SQL Server?

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

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

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

Решение Вопроса

Сколько написания и чтения этой таблицы вы ожидаете?

Я использовал одну таблицу аудита со столбцами для Table, Column, OldValue, NewValue, User и ChangeDateTime - достаточно универсальную для работы с любыми другими изменениями в БД, и хотя в эту таблицу было записано МНОГО данных, отчеты на этих данных было достаточно мало, чтобы они могли работать в периоды низкой нагрузки дня.

Добавлено: Если объем данных в сравнении с отчетностью является проблемой, таблицу аудита можно было бы реплицировать на сервер базы данных только для чтения, что позволяет вам запускать отчеты в любое время, не прерывая работу главного сервера.

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

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

Другим вариантом является использование стороннего инструмента для этого, таких какАудит ApexSQL или Изменить функцию сбора данных в SQL Server.

ответ и заполните таблицу аудита хранимой процедурой, вызываемой из триггеров таблицы.

Ваш ответ на вопрос