1. Визначаємо, який запис слід відновити. Для цього потрібно ідентифікувати змінний запис і дані, які його замінять.
2. Користуємось додатком UPDATE для перезапису поточних даних зміною, яку слід відновити в цій таблиці. У даному прикладі доведеться використовувати або властивість rowguid, або стовпець SpecialOf f erID у поєднанні з AuditModif iedDate як критерієм для інструкції UPDATE, як показано нижче.
USE AadventureWorks
GO
UPDATE Sales. SpecialOffer
SET Description = а. Description
,DiscountPct = а. DiscountPct
,Type = а. Type
,Category = а. Category
,StartDate = а. StartDate
,EndDate = а. EndDate
,MinQty = а. MinQty
,MaxQty = а. MaxQty
,rowguid = а. rowguid
,ModifiedDate = а. ModifiedDate
FROM Sales. SpecialOffer_Audit а
WHERE Specialoffer. SpecialOfferlD = 10
AND а. SpecialOfferlD = 10
AND а. AuditModifiedDate = '2006-04-02 22: 40: 27.513'
Якщо у нас є дані, які потребують регулярного відновлення, можна інкапсулювати приведений вище код в процедуру обслуговування, що зберігається. Проте якщо ми вирішимо реалізувати її, у нас можуть виникнути проблеми з введенням відновлених даних. Описані варіанти добре підходять для обмеженої кількості рядків в одній таблиці. Якщо ми працюємо з масовим високопродуктивним завантаженням в декількох таблицях, слід використовувати моментальні знімки, про які йшла мова в першому розділі.
Ми навчилися створювати моментальні знімки даних. Моментальні знімки можуть ефективно використовуватися для вирішення різних завдань в процесі розробки, тестування і виробництва. Можна використовувати архівні дані для підведення підсумків і аналізу даних на певних відрізках часу. Ми також навчилися виконувати аудит змін даних і відновлювати окремі записи даних аудиту. Зберігаючи архівні дані і відстежуючи зміни в базі даних, можна забезпечити цілісність даних, використовуючи можливість відміни окремих змін, не відновлюючи всю базу даних.