Аудит изменений SQL Server 2005
-
21-08-2019 - |
Вопрос
Есть ли встроенный способ в SQL Server 2005 для аудита таких конкретных вещей, как удаление хранимой процедуры?Есть ли таблица истории, к которой я могу запросить?У нас есть таинственный sproc, который уже несколько раз исчезал.
Решение
Вы можете создать это с помощью триггеров DDL:
Другие советы
Только если вы используете Триггеры DDL или используйте профилировщик для трассировки текста "%DROP%PROC%procname%".
Обратите внимание, что в SQL Server 2008 у них также теперь есть АУДИТ для замены трассировок профилировщика для операций проверки.Он похож, но имеет свой собственный интерфейс настройки и пользовательский интерфейс для просмотра результатов
Вы можете настроить трассировку профилировщика для захвата события управления объектами схемы аудита и фильтрации на основе имени базы данных, которое вас интересует.Каждый раз, когда объект в схеме создается, удаляется, редактируется, он запускает событие в profiler, которое включает человека, внесшего изменение, и имя хранимой процедуры.
Вам понадобятся, по крайней мере, эти столбцы профилировщика:ApplicationName - имя пользователя приложения, которое было запущено, когда они вносили изменения DatabaseName - база данных, содержащая измененный объект EventSubClass - тип действия показывает Alter, Модифицировать, Удалить, Создать и т. Д LoginName - пользователь, вносящий изменения objectName - затронутый объект
[последнее, но добавляет подробности о том, как узнать, кто внес изменения, еще до внедрения системы аудита]
Другие уже рассмотрели различные способы, с помощью которых вы можете начать аудит данных, чтобы отслеживать будущие изменения, но если у вас изначально не было никакой системы аудита, то очень сложно выяснить, кто, что и когда делал в прошлом.
Единственный вариант - попробовать прочитать журнал транзакций, предполагая, что база данных находится в режиме полного восстановления.Проблема в том, что это не поддерживается по умолчанию.Возможны следующие варианты:
- Сторонние инструменты, такие как Журнал ApexSQL или Квестовая Жаба
- Недокументированные функции, такие как DBCC LOG или fn_dblog
Смотрите эти разделы для получения более подробной информации:
Как просмотреть журнал транзакций в SQL Server 2008
Обозреватель / Анализатор журналов транзакций SQL Server
Как просмотреть историю запросов в SQL Server Management Studio
Я согласен.Это может быть профилировщик SQL Server с фильтрами.Триггеры DDL существовали в SQL Server.Вы могли бы создать что-то вроде этого:
CREATE TRIGGER ddl_drop_procedure
ON DATABASE
FOR DROP_PROCEDURE
AS
RAISERROR ('You deleted a stored procedure',10, 1)
GO
Другой вариант - использовать сторонние инструменты, такие как Автоматический аудит из codeplex или ApexSQL trigger.