Контрольная работа: Відстежування змін за допомогою стовпців і таблиць аудиту
,ModifiedDate
,AuditModifiedDate
,AuditType)
SELECT TOP 1 d. SpecialOfferlD
,d. Description
,d. DiscountPct
,d. [Type]
,d. Category
. d. StartDate
,d. EndDate
. d. MinQty
. d. MaxQty
,d. rowguid
,d. ModifiedDate
,GETDATE ()
,’UPDATE’
FROM deleted d;
GO
Перевага використання тригера полягає в тому, що він захоплюватиме будь-які оновлення, які відбудуться в таблиці, незалежно від їх джерела. Це варіант аудиту з повним обхватом. Якщо мова йде про дані, які змінюються без контролю з вашого боку, то це чудовий варіант. Але якщо ми ретельно контролюємо дані, які заносяться в таблицю, особливо якщо це виконується за допомогою процедур, що зберігаються, то в SQL Server 2005 є нова можливість аудиту змін - пропозиція OUTPUT.
Використання OUTPUT для заповнення таблиці аудиту
Щоб ефективно використовувати OUTPUT, кожну подію, яку потрібно відстежувати, зажадає розробки процедур, що зберігаються, і інструкцій SQL, які використовуватимуться для оновлення (UPDATE), вставки (INSERT) або видалення (DELETE) даних у відстежуваних таблицях. OUTPUT надає доступ до таблиць, що вставляються і видаляються, в цих процедурах і інструкціях SQL. Тепер не обов'язково використовувати тригери для доступу до даних. Представлений нижче код показує приклад використання OUTPUT для аудиту оновлення в таблиці SpecialOffer в таблиці SpecialOffer_Audit.
USE AdventureWorks
GO
UPDATE Sales. SpecialOffer
SET description = 'Big Mountain Tire Sale'
OUTPUT deleted. SpecialOfferID
,deleted. Description
,deleted. DiscountPct
,deleted. [Type]
,deleted. Category