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?
Moi aussi j'ai rencontré ce problème.
Solution :
.bak
.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.
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
C'est ça
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';
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
Terminé!
J'espère que ça aide!
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:
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
J'espère que ça aidera les autres aussi!
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:
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 FILELISTONLY
disponible dans la documentation de SQL Server .
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.
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
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.
clic droit sur la base de données | Tâches> Restaurer> Base de données
Sous "Source for restore", sélectionnez "From Device".
Sélectionnez le fichier .bak
Cochez la case pour la base de données dans la grille ci-dessous
To DataBase: "Ici vous pouvez taper un nouveau nom de base de données" (Ex: DemoDB)
Ne sélectionnez pas la base de données existante dans DropDownlist
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 ...
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.
Même problème avec moi. La solution pour moi est la suivante:
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.
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.
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.
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.
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.
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
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
Je suis sûr que ce problème est lié aux autorisations de fichiers et de dossiers.
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).