Вопрос

Есть ли встроенный способ в SQL Server 2005 для аудита таких конкретных вещей, как удаление хранимой процедуры?Есть ли таблица истории, к которой я могу запросить?У нас есть таинственный sproc, который уже несколько раз исчезал.

Это было полезно?

Решение

Вы можете создать это с помощью триггеров DDL:

http://msdn.microsoft.com/en-us/library/ms190989.aspx

Другие советы

Только если вы используете Триггеры DDL или используйте профилировщик для трассировки текста "%DROP%PROC%procname%".

Обратите внимание, что в SQL Server 2008 у них также теперь есть АУДИТ для замены трассировок профилировщика для операций проверки.Он похож, но имеет свой собственный интерфейс настройки и пользовательский интерфейс для просмотра результатов

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

Вам понадобятся, по крайней мере, эти столбцы профилировщика:ApplicationName - имя пользователя приложения, которое было запущено, когда они вносили изменения DatabaseName - база данных, содержащая измененный объект EventSubClass - тип действия показывает Alter, Модифицировать, Удалить, Создать и т. Д LoginName - пользователь, вносящий изменения objectName - затронутый объект

[последнее, но добавляет подробности о том, как узнать, кто внес изменения, еще до внедрения системы аудита]

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

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

Смотрите эти разделы для получения более подробной информации:

Как просмотреть журнал транзакций в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top