Как начинающий администратор базы данных, мне недавно была поручена задача реализовать отслеживание всех изменений данных в базе данных для части программного обеспечения, которое мы разрабатываем. Поиграв с методами сбора измененных данных Microsoft, я стал искать другие решения. Мы планируем распространять наш продукт как размещенное решение, и для максимальной масштабируемости потребуется неограниченное количество установок. Я посмотрел на IBM Guardium, а также на DB Audit от SoftTree. Мне любопытно, есть ли у кого-нибудь какие-либо решения, которые они могли использовать в прошлом, или, возможно, какие-либо предложения или методы для достижения полного и, конечно, рентабельного аудита изменений данных.
Я использую диспетчер соответствия Idera SQL. Хорошо работает, использует трассировку на стороне сервера и отправляет файлы трассировки на центральный сервер базы данных, а также имеет хеширование для защиты от взлома. Он также очень настраиваемый, поэтому вы можете выбирать, что проверять, и имеет хорошие отчеты с SSRS.
Мы используем Guardium. По сути, это сниффер пакетов плюс часть программного обеспечения, установленного непосредственно на сервере базы данных, на случай, если кто-то запустит что-либо, пока RDPd на сервере базы данных.
Еще один продукт, который может заинтересовать, - это OmniAudit: http://www.krell-software.com/omniaudit/
Он использует триггеры, но помимо модификации исходного приложения для включения регистрации всех изменений, вам остается не так много вариантов.
В SSMS есть еще одна функция аудита - это аудит SQL Server. Он обеспечивает аудит на уровне сервера и базы данных, предварительно определенные группы и действия, а также аудит изменений DDL и DML. Он также может проверять изменения аудита. Настройка аудита для операторов INSERT, UPDATE, DELETE, SELECT, REFERENCES и EXECUTE очень детальна, ее можно указать для каждого оператора индивидуально, для конкретных пользователей и объектов.
«Все выпуски SQL Server поддерживают аудит уровня сервера. Аудит уровня базы данных ограничен выпусками Enterprise, Developer и Evaluation» 1
Однако есть недостаток - захват оператора UPDATE не завершен. Собранная информация не указывает, какие записи и столбцы были изменены, а также не показывает старые и новые значения. Сбор данных об изменениях в SQL Server предоставляет более точную информацию об ОБНОВЛЕНИЯХ, поскольку четко указывает, что и как было изменено.