Похоже, вам нужно применить больше журналов транзакций. Вы должны сначала восстановить базу данных с полной резервной копией в какой-то момент в прошлом. Затем вы можете восстановить ноль или более разностных резервных копий (по порядку), чтобы пропустить их как можно дальше. Наконец, вам необходимо восстановить каждый журнал транзакций, в котором есть записи журнала, начиная с самого последнего восстановленного резервного копирования (полного или разностного) вплоть до рассматриваемого времени восстановления.
RESTORE DATABASE Blah FROM DISK = 'blah 201105210000.bak' WITH NORECOVERY;
RESTORE LOG Blah_Log FROM DISK = 'blah 201105210100.trn' WITH NORECOVERY;
RESTORE LOG Blah_Log FROM DISK = 'blah 201105210200.trn' WITH NORECOVERY;
RESTORE LOG Blah_Log FROM DISK = 'blah 201105210300.trn' WITH NORECOVERY;
RESTORE LOG Blah_Log FROM DISK = 'blah 201105210400.trn' WITH NORECOVERY;
RESTORE LOG Blah_Log FROM DISK = 'blah 201105210500.trn' WITH STOPAT 'x', RECOVERY;
Мой синтаксис может быть не идеальным, но концепция надежна, вам нужно восстановить все журналы транзакций по порядку. Если вы выберете t-log слишком рано, вы получите сообщение об этом, или если вы выберете слишком поздно, вы получите другое сообщение. Отправленное вами сообщение указывает мне на то, что t-log, который вы пытаетесь применить, имеет записи журнала полностью до идентификатора транзакции последнего примененного восстановления. Найдите больше т-журналов после этого.
Если t-журналы не должны отсутствовать, но есть, посмотрите в заданиях SQL или планах обслуживания, чтобы увидеть, есть ли у вас две резервные копии t-log, работающие по разным графикам. Если это происходило, вы должны собрать все t-журналы из обеих резервных копий, поскольку только все вместе они могут быть правильной и непрерывной цепочкой, которая позволит вам восстановить до нужного момента времени.