web-dev-qa-db-fra.com

Le jeu de sauvegarde contient une sauvegarde d’une base de données autre que la base de données existante.

J'essaie de restaurer un fichier de sauvegarde SQL Server pour ma base de données, mais une erreur se produit comme suit:

Le jeu de sauvegarde contient une sauvegarde d’une base de données autre que la base de données existante.

Ma base de données dans SQL Server 2008 et le fichier de sauvegarde est en 2005.

Quel peut être le problème?

437
R.D.

Moi aussi j'ai rencontré ce problème.

Solution :

  • Ne créez pas de base de données vide et n'y restaurez pas le fichier .bak.
  • Utilisez l'option 'Restaurer la base de données' accessible en cliquant avec le bouton droit de la souris sur la branche "Bases de données" de SQL Server Management Studio et indiquez le nom de la base de données tout en fournissant la source à restaurer.
  • Modifiez également les noms de fichier dans "Fichiers" si l'autre base de données existe toujours. Sinon, vous obtenez "Le fichier '...' ne peut pas être écrasé. Il est utilisé par la base de données 'yourFirstDb'".
751
sunil_philip

Soit:

1) Utilisez WITH REPLACE lorsque vous utilisez la commande RESTORE (si vous utilisez l'interface graphique, vous la trouverez sous Options -> Remplacer la base de données existante (WITH REPLACE)).

2) Delete l'ancienne base de données qui entre en conflit et restaure à l'aide de la commande RESTORE.

Vérifiez le lien pour plus de détails.

156
Amarnath

Commencez par créer une base de données vierge du même nom. Ensuite, optez pour l'option de restauration

Sous Options dans le volet de gauche, n'oubliez pas de sélectionner

  • Ecraser la base de données existante
  • Préserver les paramètres de réplication

enter image description here

C'est ça

86
HimalayanCoder

Avoir rencontré le même problème et trouvé la solution en utilisant SSMS 2014

 - Sélectionnez simplement l'option Ecraser la base de données existante (WITH REPLACE) 

Existing Database> Task> Restore> Database

49
Smit Patel
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';
28
Elsoni

C'est parce que le .mdf et .ldf Les fichiers de l'original Db ont été localisés à peut-être c:\programFile\.... et que ces informations sont enregistrées dans la sauvegarde!

Si vous créez le même DB sur un autre serveur SQL où l'installation est effectuée sur c:\program Files (x86)\ ...., vous ne pourrez pas restaurer comme d'habitude. Vous devez déplacer le chemin pour les fichiers .mdf et .ldf.

Donc:

  • Créer une base de données vide sur le nouveau serveur

  • Faites un clic droit sur la base de données vide> Tâches> Restaurer> Base de données> cliquez sur Périphérique sélectionnez votre .bak Fichiers> Sélectionner une base de données dans laquelle vous souhaitez restaurer

  • cliquez sur Fichiers à gauche> Sélectionnez "Déplacer tous les fichiers dans un dossier".
  • cliquez sur Options sur le site de gauche> cliquez sur Remplacer

Terminé!
J'espère que ça aide!

22
HELPER

Simple 3 étapes:

1- Faites un clic droit sur la base de données> Tâches> Restaurer> Base de données

2- Cochez Device comme source et localisez le fichier . Bak

3- Dans le volet gauche, cliquez sur options et:

  1. cocher Ecraser la base de données existante.
  2. décochez effectuer une sauvegarde du journal de bord avant la restauration
  3. check fermer Connexion existante à la base de données de destination.
  4. les autres options sont vraiment optionnelles!
20
Ali Sheikhpour

J'avais rencontré le même problème aujourd'hui. J'ai essayé toutes les solutions ci-dessus mais cela n'a pas fonctionné. Donc, poster ma solution ici.

N'oubliez pas de décocher Sauvegarde longue avant la restauration

Don't forget to uncheck Tail-long Backup before restore

J'espère que ça aidera les autres aussi!

15
Mayank Modi

Si vous utilisez l'approche de script et avez une erreur concernant les fichiers LDF et MDF, , vous pouvez d'abord interroger le fichier de sauvegarde . pour les noms logiques (et autres détails) des fichiers du jeu de sauvegarde, en utilisant les éléments suivants:

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.Microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

Vous obtiendrez des résultats similaires à ceux-ci:

enter image description here

Et vous pouvez ensuite utiliser ces noms logiques dans les requêtes:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.mdf'; -- "DB_log" is LDF logical name from query above

Plus d'informations sur RESTORE FILELISTONLYdisponible dans la documentation de SQL Server .

13
user919426

Il est tout aussi important de s’assurer que votre nom de la base de données correspond le nom de la base de données dans la sauvegarde que vous essayez de restaurer. Si cela ne correspond pas, vous obtiendrez la même erreur.

9
Andrew Marais

system.data.sqlclient.sqlerror: le jeu de sauvegarde contient une sauvegarde d'une base de données autre que la base de données 'Dbname' existante

Je suis venu pour trouver soultion

  1. Ne créez pas une base de données avec le même nom ou un nom de base de données différent! Important.

  2. clic droit sur la base de données | Tâches> Restaurer> Base de données

  3. Sous "Source for restore", sélectionnez "From Device".

  4. Sélectionnez le fichier .bak

  5. Cochez la case pour la base de données dans la grille ci-dessous

  6. To DataBase: "Ici vous pouvez taper un nouveau nom de base de données" (Ex: DemoDB)

  7. Ne sélectionnez pas la base de données existante dans DropDownlist

  8. Maintenant, cliquez sur le bouton Ok, une nouvelle base de données sera créée et toutes les données de votre fichier .bak seront restaurées.

vous pouvez même obtenir de l'aide de ce lien

J'espère que cela vous aidera à régler votre problème ...

8
akshay5662

Avant toute chose, vérifiez si votre sauvegarde est complète ou différentielle. Si vous essayez de créer une nouvelle base de données à partir d'une sauvegarde différentielle, peu importe ce que vous faites, vous rencontrerez l'erreur.

7
Tots Benedicto

Même problème avec moi. La solution pour moi est la suivante:

  1. Faites un clic droit sur la base de données.
  2. Sélectionnez les tâches, sélectionnez restaurer la base de données.
  3. Cliquez sur les options sur le côté gauche.
  4. Cochez la première option Écraser la base de données existante (WITH REPLACE).
  5. Allez à Général, sélectionnez les bases de données source et cible.
  6. Cliquez sur OK, c'est tout
4
Aayush Verma

Dans les Options, remplacez le nom de fichier "Restaurer sous" par les nouvelles bases de données mdf et ldf. Il référence les fichiers .mdf et .ldf de la base de données source.

2
Priyanka Rawat

Je devais créer une nouvelle base de données sur mon local pour les tests et j'avais une sauvegarde de mon prod. J'ai d'abord créé la base de données et essayé d'exécuter le fichier BAK par-dessus la nouvelle base de données, ce qui a généré cette erreur pour moi. J'ai supprimé la base de données et l'ai restaurée tout en recherchant le nouveau nom de la base de données dans l'écran de restauration lui-même. La base de données a été créée automatiquement lors de la restauration.

2
Angelina Ilieva

J'essayais juste de résoudre ce problème.

J'avais tout essayé, depuis l'administration en passant par les suggestions trouvées ici et ailleurs; ce qui a finalement été résolu pour moi, c’était de cocher la case "déplacer les fichiers" dans l’onglet Propriétés de la propriété Fichiers.

Espérons que cela aide quelqu'un d'autre.

2
Clint

Certains d'entre vous ont très compliqué la chose. J'ai trouvé cela extrêmement simple.

1) Créez une base de données portant le même nom que votre nom de base de données de fichiers .bak!

2) clic droit sur la base de données | Tâches> Restaurer> Base de données

3) Sous "Source for restore", sélectionnez "From Device".

4) Sélectionnez le fichier .bak

5) Cochez la case pour la base de données dans la grille ci-dessous

6) Sous "Sélectionnez une page" à droite Sélectionnez "Options".

7) Cochez la case "Conserver les paramètres de réplication (WITH KEEP_REPLICATION)".

Maintenant, retournez à la page Général et cliquez sur OK pour restaurer la base de données ... C'est tout.

2
Rolon

J'ai eu un travail alternatif, en utilisant des scripts Generate. Cela a fonctionné pour moi car Backup-Restore n'a pas aidé à résoudre le problème en raison de la même erreur.

2
Altaf Patel

Vous pouvez restaurer dans une nouvelle base de données, vérifier la syntaxe du nom de fichier, il sera dans le fichier journal, pour la nouvelle version SQL, un suffixe "_log"

ad vérifier le remplacement de l'indicateur de la base de données existante dans l'onglet Option

Fabio

1
Fabio

au lieu de cliquer sur Restaurer la base de données cliquez sur Restaurer le fichier et les groupes de fichiers ..

qui fonctionnent sur mon serveur SQL

0
Ali Sadri

Je suis sûr que ce problème est lié aux autorisations de fichiers et de dossiers.

0
Popas

J'essayais de restaurer une base de données de production sur une base de données intermédiaire sur le même serveur.

La seule chose qui a fonctionné dans mon cas a été de restaurer une nouvelle base de données vierge. Cela a fonctionné à merveille. N'essayez pas d'écraser les fichiers de production (ce qui serait le cas si vous ne restauriez que le fichier de sauvegarde de production dans la base de données de transfert existante). Supprimez ensuite l'ancienne base de données et renommez - les fichiers conservent le nouveau nom temporaire, mais dans mon cas, c'est bien.

(Sinon, supprimez d'abord la base de données de transfert, puis restaurez-la dans une nouvelle base de données portant le même nom que la base de données de transfert).

0
mike nelson