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





Вы можете создать это с помощью триггеров DDL:
Только если вы используете DDL-триггеры или профилировщик для трассировки текста "% DROP% PROC% procname%"
Вы можете настроить трассировку профилировщика для захвата события управления объектами схемы аудита и фильтрации на основе имени базы данных, которое вам нужно. Каждый раз, когда объект в схеме создается, удаляется или редактируется, он запускает событие в профилировщике, которое включает человека, который внес изменение, и имя хранимой процедуры.
Вам понадобятся как минимум эти столбцы профилировщика: ApplicationName - имя пользователя приложения, которое было запущено, когда они внесли изменения DatabaseName - база данных, содержащая измененный объект EventSubClass - Тип действия показывает "Изменить", "Изменить", "Удалить", "Создать" и т. д. LoginName - пользователь вносит изменения ObjectName - затронутый объект
Обратите внимание, что в SQL Server 2008 они также теперь имеют AUDIT для замены трассировки профилировщика для действий по аудиту. Он похож, но имеет собственный пользовательский интерфейс конфигурации и пользовательский интерфейс для просмотра результатов.
[поздно, но добавляет подробности о том, как узнать, кто внес изменение, еще до того, как система аудита будет введена в действие]
В других уже описаны различные способы начала аудита данных для отслеживания будущих изменений, но если у вас изначально не было какой-либо системы аудита, то очень сложно выяснить, кто, что и когда делал, исторически.
Единственный вариант - попытаться прочитать журнал транзакций, предполагая, что база данных находится в режиме полного восстановления. Проблема в том, что по умолчанию это не поддерживается. Варианты:
См. Эти темы для получения более подробной информации:
Как просмотреть журнал транзакций в 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
Другой вариант - использовать сторонние инструменты, такие как Auto Audit from codeplex или триггер apexSQL.