Sobes.tech
Middle

Как работи възстановяването на база данни от пълно + диференциално + транзакционно лог архив?

sobes.tech AI

Отговор от AI

Възстановяването на база данни от пълни (full), диференциални (differential) и журнални (transaction log) архиви се извършва на няколко етапа:

  1. Възстановява се последният пълен архив — това е базовото състояние на базата.
  2. След това се прилага последният диференциален архив, който съдържа промените от момента на пълния архив.
  3. След това се прилагат последователно всички транзакционни журнали, направени след диференциалния архив, за да се доведе базата до желаното състояние към момента на последния лог.

Важно е при възстановяване да се използва опцията NORECOVERY за междинните стъпки, за да остане базата в състояние на възстановяване и да приема следващи архиви, и едва след прилагането им всички — да се изпълни RECOVERY.

Примерни команди:

RESTORE DATABASE MyDB FROM DISK = 'full.bak' WITH NORECOVERY;
RESTORE DATABASE MyDB FROM DISK = 'diff.bak' WITH NORECOVERY;
RESTORE LOG MyDB FROM DISK = 'log1.trn' WITH NORECOVERY;
RESTORE LOG MyDB FROM DISK = 'log2.trn' WITH RECOVERY;