У меня есть ситуация, которую нелегко выяснить, и я подумал, что я хотел бы спросить на этом форуме, если у других могут быть предложения.
Я использую SQL Server 2008 R2 Standard SP3 на Windows Server 2008R2 Enterprise.
База данных нуждалась в некотором обслуживании, и после этого мне нужно было восстановить ее на другом сервере. У меня есть полное резервное копирование базы данных с COPY_ONLY плюс набор из 4 резервных копий tlog.
- перед запуском создайте tlogbackup1
- переход от
FULL
кBULK_LOGGED
модели восстановления - добавить новую файловую группу
- добавить файл в newfilegroup
- установить новую группу по умолчанию
- выбрать в таблицу (на newfilegroup)
- сбросить оригинальный стол
- удалить оригинальный файл
- удалить оригинальную файловую группу
- изменить имя новой таблицы в соответствии с исходной таблицей
- изменить имя файла newfilegroup в соответствии с исходной файловой группой
- изменить имя файла в каталоге, чтобы оно соответствовало оригинальному имени файла
- изменить имя файла на уровне ОС, чтобы оно соответствовало оригинальному имени файла
- установить файловую группу по умолчанию как оригинал
- принести дб онлайн
- переход от
BULK_LOGGED
кFULL
модели восстановления - После завершения всех шагов создайте tlogbackup2
Для восстановления всех резервных копий необходимо использовать WITH MOVE из-за изменения буквы диска на сервере восстановления.
Шаги восстановления:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup1.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup2.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
Окончательное восстановление журнала Tlog достигает 100%, а затем завершается с ошибкой 3456:
Обработано 368 страниц для базы данных «SomeDB», файл «SystemData» для файла 1.
Обработано 7656520 страниц для базы данных «SomeDB», файл «SystemDataPDS» для файла 1.
Обработано 172430 страниц для базы данных «SomeDB», файл «SystemData_log» для файла 1.
Сообщение 3456, уровень 16, состояние 1, строка 1
Не удалось повторить запись журнала (210388: 123648: 232), для идентификатора транзакции (0: 1016710921), на странице (4: 8088), база данных «SomeDB» (идентификатор базы данных 6) , Страница: LSN = (0: 0: 1), тип = 11. Журнал: OpCode = 4, контекст 11, PrevPageLSN: (210388: 122007: 1). Восстановление из резервной копии базы данных или восстановление базы данных. Сообщение 3013, уровень 16, состояние 1, строка 1 RESTORE LOG завершается ненормально.
Просто чтобы убедиться, что с полной резервной копией БД все в порядке, я восстановил ее CHECKDB
, и ошибок не было.
Все отзывы приветствуются.
Заранее спасибо,
Нед Оттер