Tengo una situación que no es fácil de resolver, y pensé en preguntar en este foro si otros podrían tener sugerencias.
Estoy ejecutando SQL Server 2008 R2 Standard SP3 en Windows Server 2008R2 Enterprise.
Una base de datos necesitaba un poco de mantenimiento, y después del hecho, necesitaba restaurar en otro servidor. Tengo una copia de seguridad de db completa con COPY_ONLY más un conjunto de 4 copias de seguridad de tlog.
- antes de comenzar, cree tlogbackup1
- cambiar de
FULL
alBULK_LOGGED
modelo de recuperación - agregar nuevo grupo de archivos
- agregar archivo a newfilegroup
- establecer newfilegroup como predeterminado
- seleccionar en la tabla (en newfilegroup)
- soltar la mesa original
- eliminar archivo original
- eliminar grupo de archivos original
- cambiar el nombre de la nueva tabla para que coincida con la tabla original
- cambiar el nombre de archivo del grupo de archivos nuevos para que coincida con el grupo de archivos original
- cambiar el nombre del archivo en el catálogo para que coincida con el nombre del archivo original
- cambiar el nombre del archivo a nivel del sistema operativo para que coincida con el nombre del archivo original
- configura el grupo de archivos predeterminado para que sea el original
- traer db en línea
- cambiar de
BULK_LOGGED
alFULL
modelo de recuperación - Después de completar todos los pasos, cree tlogbackup2
La restauración de todas las copias de seguridad debe usarse WITH MOVE, debido a los cambios de letra de unidad en el servidor de restauración.
Pasos de recuperación:
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
La restauración final de tlog llega al 100% y luego falla con el error 3456:
Se procesaron 368 páginas para la base de datos 'SomeDB', archivo 'SystemData' en el archivo 1.
Se procesaron 7656520 páginas para la base de datos 'SomeDB', archivo 'SystemDataPDS' en el archivo 1.
Se procesaron 172430 páginas para la base de datos 'SomeDB', archivo 'SystemData_log' en el archivo 1.
Msg 3456, Nivel 16, Estado 1, Línea 1
No se pudo rehacer el registro de registro (210388: 123648: 232), para ID de transacción (0: 1016710921), en la página (4: 8088), base de datos 'SomeDB' (ID de base de datos 6) . Página: LSN = (0: 0: 1), tipo = 11. Registro: OpCode = 4, contexto 11, PrevPageLSN: (210388: 122007: 1). Restaurar desde una copia de seguridad de la base de datos, o reparar la base de datos. Msg 3013, Nivel 16, Estado 1, Línea 1 RESTORE LOG está terminando anormalmente.
Solo para verificar que la copia de seguridad db completa estaba bien, restauré la CHECKDB
ejecución y no hubo errores.
Todos los comentarios son bienvenidos.
Gracias por adelantado,
Nutria Ned