This backup set cannot be restored because?

Александр Третьяков
Дата: 12.12.2002 04:18:24
W2000+SP2, SQL7.0+SP4
У меня реализована следующая схема резервных копий:
1. раз в месяц full backup
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkFull' WITH INIT , NOUNLOAD , NAME = N'BackUp Sk full', NOSKIP , STATS = 10, NOFORMAT
2. раз в неделю differencial backup
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkDiff' WITH INIT , NOUNLOAD , DIFFERENTIAL , NAME = N'BackUp Sk diff disk J', NOSKIP , STATS = 10, NOFORMAT
3. раз в час transanction log backup
BACKUP LOG [Sk] TO DISK = N'J:\BackUp\SkTran' WITH INIT , NOUNLOAD , NAME = N'BackUp Sk Transaction disk J', NOSKIP , STATS = 10, NOFORMAT

Бекапы выполняються успешно.
База данных имеет только атрибуты avtoshrink, avtocreate statistic, avto update statistic.
Когда пробую восстановить данные на какой-то конкретный день и час, то восстановление из full backup успешно,differencial backup успешно а при восстановлении transanction log backup пишет:

This backup set cannot be restored because the database has not been rolled forward far enough/ Yuo must restore all earlier logs before restoring this log. BackUp or restore operation termenating abnormally.

Где ошибка и как восстановить данные из backup transanction log?

Заранее признателен за ответ
Александр Третьяков
Слон
Дата: 12.12.2002 08:13:33
Хе. Конечно. Ведь при инициализации TRANSACTION LOG (option WITH INIT) стираются все предыдущие transaction log backups. То же, кстати, верно и для differential backup. Так что если можно восстановить базу до состояния LAST FULL BACKUP + LAST DIFFERENTIAL BACKUP (обратите внимание, что все промежуточные варианты уже невозможны), то transation log backup не имеет транзакций, которые были слиты в предыдущие transaction log backups, так как он их и уничтожил опцией with init.

Вообще то я бы предложил следующую схему:

Каждый нечетный месяц первого числа в полночь:
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkFull1' WITH INIT
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkDiff1' WITH DIFFERENTIAL, INIT
BACKUP LOG [Sk] TO DISK = N'J:\BackUp\SkTran1' WITH INIT
Каждую неделю каждого нечетного месяца в субботу в полночь:
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkDiff1' WITH DIFFERENTIAL, NOINIT
Каждый час нечетного месяца (причем я бы наверное исключил ночное время)
BACKUP LOG [Sk] TO DISK = N'J:\BackUp\SkTran1' WITH NOINIT

Каждый четный месяц первого числа в полночь:
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkFull2' WITH INIT
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkDiff2' WITH DIFFERENTIAL, INIT
BACKUP LOG [Sk] TO DISK = N'J:\BackUp\SkTran2' WITH INIT
Каждую неделю каждого четного месяца в субботу в полночь:
BACKUP DATABASE [Sk] TO DISK = N'J:\BackUp\SkDiff2' WITH DIFFERENTIAL, NOINIT
Каждый час четного месяца (причем я бы наверное исключил ночное время)
BACKUP LOG [Sk] TO DISK = N'J:\BackUp\SkTran2' WITH NOINIT


-- Слон
Александр Третьяков
Дата: 12.12.2002 11:15:04
Спасибо, пробую.