2012-09-11 16 views
35

traté de restaurar una base de datos utilizando la siguiente consulta:El final del registro de la base de datos "DBName" no ha sido respaldada

ALTER DATABASE [DatabaseName] SET Single_User WITH Rollback Immediate GO 
RESTORE DATABASE DatabaseName FROM DISK = 'C:\DBName-Full Database Backup' 
ALTER DATABASE [DatabaseName] SET Multi_User GO 

pero en lugar de restaurar la base de datos, que estoy recibiendo este error:

Msg 3159, Level 16, State 1, Line 2

The tail of the log for the database "DatabaseName" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log. Msg 3013, Level 16, State 1, Line 2 RESTORE DATABASE is terminating abnormally.

+0

En mi caso, sucedió cuando ya tenía una base de datos con el mismo nombre en el mismo servidor SQL. Acabo de eliminar el archivo db con el mismo nombre y ejecuté el comando de restauración. Nota: eliminé db con el mismo nombre ya que era una copia anterior de la base de datos que ya no necesitaba. Pero, si todavía necesita la copia anterior, puede querer hacer una copia de seguridad de ella o cambiarle el nombre al db anterior o al anterior. Pero, si no tiene una base de datos con el mismo nombre, haga lo que el mensaje de error le pide. – nam

Respuesta

76

El mensaje de error que está recibiendo le dice exactamente lo que necesita hacer si no le importa la base de datos existente o el registro.

RESTORE DATABASE DAtabaseName FROM DISK = 'C:\DBName-Full Database Backup' 
WITH REPLACE 

En SQL Server Management Studio (Tareas> Restaurar), puede añadir la opción WITH REPLACE abriendo la página "Opciones" en el lado izquierdo y marcando "sobrescribir la base de datos existente".

+0

Tuve un problema de transporte también. Tuvo que ejecutar USE master; ALTER DATABASE RAVEN SET RECUPERACIÓN SIMPLE; Solo recuerda volver a TOTAL cuando hayas terminado. –

1

Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose.

Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.

Realmente, esa es la respuesta. Justo ahí, en el mensaje. ¿Qué quieres hacer? Copia de seguridad de la cola por lo que no se pierde? ¿Reemplazar el registro que no fue respaldado? Tu llamada.

+0

ya que trabajo raramente con SQL Server Copia de seguridad de la base de datos yendo a tareas, copia de seguridad y realicé una copia de seguridad, y ahora quiero restaurarla, pero no me permite, así que no sé exactamente el motivo del error anterior, y la mayoría de los foros dice que funciona sin ningún error –

+2

El error le advierte que si continúa con RESTRORE, perderá la cola actual del registro. En otras palabras, algunas operaciones aún no estaban respaldadas.Le ofrece dos opciones: hacer una copia de seguridad de la cola actual del registro, por lo que se puede restaurar en otro lugar o más adelante * o * use la cláusula WITH REPLACE de RESTORE para indicar a SQL Server que no le importan las operaciones que perderse en la cola actual del registro y simplemente seguir adelante y reemplazar el contenido actual con el del archivo de respaldo que está restaurando. –

2

Como alternativa, puede cambiar el modelo de recuperación de la base de datos a "Simple" en lugar de "Completo".

Haga clic derecho en la base de datos, elija "propiedades", "opción", cambie "modelo de recuperación" a "simple".

Luego, lo que ha escrito debería funcionar sin producir errores.

21

Para aquellos que están usando Management Studio esto debería funcionar:

enter image description here

+0

básicamente solo agrega una palabra clave [replace] a [With] param list si generalmente genera scripts desde SSMS –

2

Alternativamente, se puede cambiar el modelo de recuperación de base de datos para Simple en lugar de Full.

  1. Haga clic derecho sobre la base de datos
  2. Elija properties ->option
  3. Cambio recovery model a simple

Entonces lo que ha escrito debería funcionar sin producir errores.

Funcionó bien conmigo.

Cuestiones relacionadas