Published on

September 21, 2007

Расширенная аудитория в SQL Server

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

Что такое зеркальная таблица?

Зеркальная таблица – это таблица, которая предназначена для “отражения” другой таблицы и записи всей информации, которая находится в этой таблице, вместе с датами и временем изменения. Она позволяет отслеживать изменения, внесенные в исходную таблицу, более подробно.

Например, рассмотрим таблицу Orders в базе данных Northwind. Создав зеркальную таблицу с названием Orders_Audit, мы можем отслеживать все изменения, внесенные в таблицу Orders, вместе с пользователем, который внес изменение, датой и временем изменения, а также типом действия (вставка, обновление или удаление).

Внедрение аудита в зеркальную таблицу

Для внедрения аудита в зеркальную таблицу мы можем использовать триггеры в SQL Server. Триггеры – это специальные типы хранимых процедур, которые автоматически выполняются в ответ на определенные события, такие как операции вставки, обновления или удаления в таблице.

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

Вот пример триггера для вставки:

CREATE TRIGGER Orders_tri ON Orders FOR INSERT
AS
INSERT INTO Orders_Audit
SELECT *, SUSER_SNAME(), GETDATE(), 'I'
FROM inserted
RETURN

Этот триггер будет дублировать информацию, вставленную в таблицу Orders, в таблицу Orders_Audit, вместе с именем пользователя, текущей датой и временем сервера и типом действия ‘I’ для вставок.

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

Плюсы и минусы расширенной аудитории

Хотя расширенная аудитория с использованием зеркальной таблицы предоставляет более подробный аудиторский след, есть некоторые компромиссы, которые следует учесть.

Плюсы:

  • Позволяет отслеживать историю каждой строки подробно
  • Полезно для финансовых приложений или таблиц, где требуются точные аудиторские следы

Минусы:

  • Накладывает дополнительную нагрузку на сервер во время операций вставки/обновления/удаления
  • Увеличивает объем хранилища, требуемого для каждой таблицы
  • Неэффективно написанные приложения могут быстро перегрузить возможности аудита

Важно взвесить плюсы и минусы перед внедрением расширенной аудитории в вашей среде SQL Server.

Заключение

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

Как всегда, я приветствую ваши отзывы и предложения. Не стесняйтесь делиться своими идеями и критикой в разделе комментариев ниже.

Автор: Стив Джонс

Дата: Март 2003

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.