Аудит изменений SQL Server 2005

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 213
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

  • Сторонние инструменты, такие как Журнал 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

Другой вариант - использовать сторонние инструменты, такие как Auto Audit from codeplex или триггер apexSQL.

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