web-dev-qa-db-fra.com

La queue du journal de la base de données "DBName" n'a pas été sauvegardée

J'ai essayé de restaurer une base de données en utilisant la requête suivante:

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

mais au lieu de restaurer la base de données, j'obtiens cette erreur:

Msg 3159, niveau 16, état 1, ligne 2

La queue du journal de la base de données "DatabaseName" n'a pas été sauvegardée. Utilisation BACKUP LOG WITH NORECOVERY pour sauvegarder le journal s'il contient du travail que vous ne voulez pas perdre. Utilisez le WITH REPLACE ou WITH STOPAT clause de l'instruction RESTORE pour simplement écraser le contenu du journal. Msg 3013, niveau 16, état 1, ligne 2 RESTORE DATABASE se termine anormalement.

39
tereško

Le message d'erreur que vous obtenez vous indique exactement ce que vous devez faire si vous ne vous souciez pas de la base de données ou du journal existant.

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

Dans SQL Server Management Studio (Tâches> Restaurer), vous pouvez ajouter le WITH REPLACE option en ouvrant la page "Options" sur le côté gauche et en cochant "Remplacer la base de données existante".

91
tomfanning

Pour ceux qui utilisent Management Studio cela devrait fonctionner:

enter image description here

22
Adil Malik

Vous pouvez également remplacer le modèle de récupération de base de données par Simple au lieu de Full.

  1. Clic droit sur la base de données
  2. Choisissez properties-> option
  3. Changement recovery model à simple

Alors ce que vous avez écrit devrait fonctionner sans produire d'erreurs.

Cela a bien fonctionné avec moi.

3
catcher

Alternativement, vous pouvez changer le modèle de récupération de base de données en "Simple" au lieu de "Complet".

Faites un clic droit sur la base de données, choisissez "propriétés", "option", changez "modèle de récupération" en "simple".

Alors ce que vous avez écrit devrait fonctionner sans produire d'erreurs.

2
saeed khalafinejad

Utilisez BACKUP LOG WITH NORECOVERY pour sauvegarder le journal s'il contient du travail que vous ne voulez pas perdre.

Utilisez la clause WITH REPLACE ou WITH STOPAT de l'instruction RESTORE pour simplement écraser le contenu du journal.

Vraiment, c'est la réponse. Juste là, dans le message. Qu'est-ce que tu veux faire? Sauvegardez la queue pour ne pas être perdu? Remplacer le journal qui n'a pas été sauvegardé? Ton appel.

1
Remus Rusanu