Аудит данных 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 для одиночной записи истории. Подробнее см. Ссылку.