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

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

Я использую 2008 R2 Express Edition и хочу специально отслеживать одного пользователя, который входит в систему через Management Studio и выполняет запросы для внесения изменений вручную. Я хочу посмотреть, какой запрос был запущен и, таким образом, определить, что было изменено и как. Я не заинтересован в восстановлении информации. Я рассмотрел отслеживание изменений, но прочитал, что он не идеален и для аудита, и я не уверен, как читать данные, затем я рассмотрел опцию Bulk-Logging в базе данных, однако затем мне нужно рассмотреть обработку файлов журналов, которые могут стать огромными, так как база данных постоянно используется веб-приложением. Мне интересно, есть ли более краткий способ сделать то, что я хочу?

2 ответа

Решение

Отслеживание изменений не отслеживает фактические данные, которые были изменены.

Сбор данных изменений отслеживает данные, которые были изменены, но является функцией Enterprise Edition.

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

Сравнение сбора данных об изменениях и отслеживания изменений
http://msdn.microsoft.com/en-us/library/cc280519%28v=sql.105%29.aspx

Изменить захват данных
http://msdn.microsoft.com/en-us/library/bb522489%28v=sql.105%29.aspx

CREATE TRIGGER (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms189799%28v=sql.105%29.aspx

Начиная с SQL Server 2008, существует 3 собственных решения для аудита - отслеживание изменений, сбор данных изменений и аудит SQL Server, но только одно отслеживает пользователя, который внес изменения

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

Установка для базы данных модели восстановления Bulk-Logging не предоставляет информацию о запросах, выполненных к базе данных. однако он предоставит информацию о том, кто что сделал. Чтобы размер файла журнала транзакций базы данных не увеличивался, периодически создавайте резервные копии журнала транзакций.

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

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

SQL Server Audit - это единственная функция, которая фиксирует имя пользователя, который внес изменение. Он также фиксирует выполнение операторов SELECT и EXECUTE. Проверенная информация может храниться в 3 типах файлов - файле *.sqladuit, журнале приложений и безопасности, и вы можете использовать функцию fn_get_audit_file, утилиту просмотра файлов журнала в SQL Server Management Studio и средство просмотра событий Windows, чтобы прочитать их.

Кроме того, существуют сторонние инструменты аудита, которые также предоставляют встроенные отчеты, такие как ApexSQL Comply

Отказ от ответственности: я работаю на ApexSQL в качестве инженера службы поддержки

Другие вопросы по тегам