Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Для этого мы используем для этого две таблицы.

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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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