Аудит данных SQL Server

Я смотрю на изменение нашего процесса аудита для наших баз данных SQL Server 2005, и я столкнулся с проблемой "Захват данных" в SQL Server 2008.

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

Я заметил, что когда я читал о CDC в справке MS, он сказал, что данные аудита обычно сохраняются на пару дней. Это невозможно сделать, я бы хотел хранить данные на неопределенный срок, знает ли кто-нибудь о проблемах с этим подходом?

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

Я за базовым: информация "До, После, Кто, когда" для любых изменений.

Ответы

Ответ 1

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

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

Вот некоторые ссылки с дополнительной информацией о том, как это было сделано с помощью триггеров:
SQL Audit Trail
sql-server-history-table-populate-through-sp-or-trigger

Здесь решение для отслеживания аудита с открытым исходным кодом, использующее LINQ: DoddleAudit

Ответ 2

Довольно поздно, но, надеюсь, это будет полезно для других читателей...

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

Триггеры

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

CDC

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

Следы

  • Преимущества: большая гибкость при проверке. Даже проверенные утверждения могут быть проверены.
  • Недостатки. Вам нужно будет создать отдельное приложение для анализа файлов трассировки и сбора полезной информации из них.

Чтение журнала транзакций

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

Ive работал с несколькими инструментами аудита из ApexSQL, но есть также хорошие инструменты из Idera (менеджер соответствия) и Krell (omni audit)

Аудит ApexSQL - Инструмент аудита, основанный на триггерах. Сгенерировано и управляет триггерами аудита.

Журнал ApexSQL - позволяет выполнять аудит, читая журнал транзакций

Ответ 3

В SQL Server 2008 вы можете использовать функцию "Аудит" и данные о запасах в файле, журнале приложений или системном журнале. Найдите дополнительную информацию по адресу: http://msdn.microsoft.com/en-us/library/cc280386.aspx

Ответ 4

Вы можете редактировать задание сервера Sql, которое удаляет зафиксированные изменения через два дня. Вы также можете продлить это время очистки в соответствии с вашим комфортом или сделать его постоянным.

Ответ 5

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