13
Кафедра комп'ютерних технологій
Індивідуальне завдання
з дисципліни: " Структурована мова запитів SQL"
Тема: Відстежування змін за допомогою стовпців і таблиць аудиту
Коломия 2009
План
Відстежування події
Типи даних
Коментарі
INSERT, UPDATE або DELETE
DELETE
DATETIME
VARCHAR
BІТ/ТІN YINT
Використовується для відстежування дати і часу виконання відстежуваної дії
Зазвичай використовується з функцією GETDATE () як значення за умовчанням, але значення може задаватися і зухвалим застосуванням
Використовується для відстежування імені користувача або додатку, що виконує відстежувану дію.
Використовується для того, щоб помітити дані як що видаляються. Це може з великою ефективністю застосовуватися в індексуванні і фільтрації
По цій таблиці можна зробити вивід, що зміни даних насправді не протоколюються. Найбільш ефективний спосіб використання стовпців аудиту - це відстежування факту внесення зміни, часу зміни і особи або додатку, що виконав цю зміну. Можна використовувати ці стовпці в будь-якій комбінації, щоб відстежувати зміни в записах в реальній таблиці.
Налаштування таблиці аудиту
Запускаємо SQL Server Management Studio і знаходимо в Object Explorer (Оглядач об'єктів) в базі даних Adventure Works таблицю Sales. SpecialOffer.
Генеруємо базовий сценарій аудиту, клацнувши правою КНОПКОЮ миші на таблицю Sales. SpecialOffer і вибравши з контекстного меню команди Script Table As, Create To, New Query Editor Window (Створити сценарій для таблиці, Використовуючи CREATE, В новому вікні редактора запитів). Після цього відкриється нове вікно запиту з готовим для редагування сценарієм CREATE TABLE.
Відредагуємо сценарій, виконавши перераховані нижче дії. Для цього прикладу остаточна редакція сценарію показана у дії 4. Спочатку видаляємо всі додаткові сценарії. Потрібно видалити всі рядки кодів, які не входять в інструкцію CREATE. Потім змінюємо ім'я таблиці з Sales. SpecialOffer на Sales. SpecialOffer_Audit.
Тепер видаляємо всі обмеження для таблиці і присвоюємо для всіх стовпців значення NULL. Завдяки цьому таблиця буде більше схожа на журнальну таблицю. В цьому випадку таблиця аудиту не повинна заважати звичайним операціям в таблиці із самого початку. Це також повинно спростити управління таблицею. Додаємо всі додаткові стовпці, які допомагатимуть у визначенні типу змін, дати змін і інших елементів аудиту, які потрібно відстежувати. У даному прикладі потрібно додати стовпці, перераховані в табл.2.
Табл. 2. Стовпці, які потрібно додати в таблицю аудиту
Ім'я стовпця
Тип даних
AuditModif iedDate
AuditType
NVARCHAR (20)
4. Виконуємо остаточний сценарій, представлений нижче, в базі даних Adventure Works. (Цей код можна знайти у файлах прикладів під ім'ям CreateАuditTable. sql)
USE AdventureWorks;
GO
CREATE TABLE Sales. SpecialOffer_Audit (
SpecialOfferID INT NULL,
Description NVARCHAR (255) NULL,
DiscountPct SMALLMONEY NULL,
[Type] NVARCHAR (50) NULL,
Category NVARCHAR (50) NULL,
StartDate DATETIME NULL,
EndDate DATETIME NULL,
MinQty INT NULL,
MaxQty INT NULL,
rowguid UNIQUEIDENTIFIER NULL,
ModifiedDate DATETIME NULL,
AuditModifiedDate DATETIME NULL,
AuditType NVARCHAR (20) null
);
Основні способи переміщення даних в таблиці аудиту в SQL Server 2005 - це тригери бази даних і нова пропозиція T-SQL OUTPUT. Проте OUTPUT додає деякі цікаві можливості. Тепер ми на прикладі вивчимо кожен з цих двох варіантів.