No se puede restaurar la base de datos de SQL Server desde la copia de seguridad completa, falla el procesamiento del registro, la base de datos está en estado de 'restauración'


14

Estoy tratando de configurar una base de datos para fines de desarrollo en el SQL Server Developer Edition 12.0.2000.8 local de mi PC. Tengo una copia de seguridad completa de la base de datos y archivos de copia de seguridad separados solo del registro de transacciones disponibles que me enviaron a través de la red.

Cuando intento restaurar desde una copia de seguridad completa, después de un tiempo (~ 1 hora tal vez, la base de datos tiene un tamaño de ~ 270 GB), aparece un error:

System.Data.SqlClient.SqlError: se produjo un error al procesar el registro de la base de datos 'nombre de base de datos'. Si es posible, restaure desde la copia de seguridad. Si no hay una copia de seguridad disponible, puede ser necesario reconstruir el registro. (Microsoft.SqlServer.SmoExtended)

Después de esto, la base de datos está en estado 'Restaurando ...'.

Quería ejecutar algo como (lo obtuve de esta pregunta)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

en su contra, pero, naturalmente, no puedo, ya que la base de datos está en el estado "Restaurando ...". Reiniciar el proceso de restauración lleva al mismo mensaje de error, dejarlo y restaurar nuevamente no ayudó.

¿Cómo hago para que db funcione? La consistencia transaccional no me importa.

El script de restauración generado automáticamente por SSMS:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

El resultado de la consulta sugerida por @Craig Efrein

El registro no se puede reconstruir porque había transacciones / usuarios abiertos cuando se cerró la base de datos, no se produjo ningún punto de control en la base de datos o la base de datos era de solo lectura. Este error podría ocurrir si el archivo de registro de transacciones se eliminó manualmente o se perdió debido a una falla de hardware o entorno.


Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Paul White 9

Respuestas:


2

De los comentarios movidos al chat, esta nota del OP:

Acabo de intentar adjuntarlo a través de GUI. Cuando seleccioné el archivo .mdf, el SSMS identificó que la base de datos constaba de 3 archivos (datos, índice, registro), pero de alguna manera, aunque estaba restaurando WITH MOVE, ¡los detalles de la base de datos sobre la ruta del archivo decían que estaba mal! Así que solo apunté al antiguo archivo de registro / datos / índice y ... La base de datos está en línea.


-3

Cambie al modo de usuario único y restaure.

ejemplo:
La primera restauración usa la opción NORECOVERY para que se puedan realizar restauraciones adicionales. El segundo comando restaura el registro de transacciones y luego pone la base de datos en línea para uso del usuario final.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
La pregunta hace referencia a una sola instrucción RESTORE DATABASE, no se realiza ninguna restauración de registro de transacciones por separado. Es probable que la base de datos de origen y / o el archivo de respaldo estén dañados.
Bryan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.