Importer un fichier .bak dans une base de données dans SQL Server

231

J'ai un fichier avec .bakextension.

Comment puis-je importer cette date dans une base de données dans SQL Server?

alex
la source
Je suppose que vous utilisez MSSQL, voici un fil expliquant quelques façons de restaurer.
Andrew Keith
Vous pouvez créer une base de données vide et restaurer les données dans la base de données vide, en utilisant votre .bak
Michel Ayres
Le moyen le plus simple est la 3e réponse, bases de données de clic droit, importation, périphérique, sélection du fichier .bak, terminé.
Mafii
Quelqu'un peut-il élargir la réponse pour une solution conviviale d'automatisation? Passer par l'interface utilisateur et faire plusieurs clics n'est pas très efficace.
L. Holanda,

Réponses:

251

Sur SQL Server Management Studio

  1. Clic droit sur Bases de données dans le volet gauche (Explorateur d'objets)
  2. Cliquez sur Restaurer la base de données ...
  3. Choisissez Appareil , cliquez sur ...et ajoutez votre fichier .bak
  4. Cliquez sur OK , puis à nouveau sur OK

Terminé.

Marcelo Mason
la source
4
Cela fonctionne comme un charme. Ce sont d'excellentes instructions simplifiées, et ce sont essentiellement les mêmes instructions du lien officiel de Microsoft mentionnées dans la réponse la plus votée ici.
Leonardo Lopez
3
Si cela échoue, vous devrez probablement effacer une base de données existante.
DigitalDesignDj
3
Ça ne marche pas pour moi. Je pointe vers le bon dossier et il ne voit même pas les fichiers. Je colle le nom de fichier exact dans la boîte de dialogue et il indique que le fichier n'existe pas. De plus, la boîte de dialogue voit un lecteur qui n'existe pas sur mon serveur. La base de données se souvient-elle de l'emplacement de la dernière sauvegarde et acceptera-t-elle uniquement une restauration à partir de ce point? Je trouve très étrange que je ne puisse pas sélectionner un fichier de sauvegarde à restaurer.
James
13
Mon fichier .BAK était dans le répertoire "Téléchargements" qui existait sous mon compte d'utilisateur. J'ai dû déplacer le fichier .BAK à la racine du C: pour que cet outil le voie et me permette de le restaurer. Les fichiers sous mon utilisateur n'étaient tout simplement pas vus pour une raison quelconque.
jeremysawesome
6
Cela ne fonctionne pas. Je clique avec le bouton droit sur "Bases de données" mais il n'y a pas de "Restaurer la base de données ...".
user34660
53

Les fichiers .bak sont des sauvegardes de base de données. Vous pouvez restaurer la sauvegarde avec la méthode ci-dessous:

Comment: restaurer une sauvegarde de base de données (SQL Server Management Studio)

Jon Schoning
la source
8
Cela ne fonctionne pas. L'article dit: "... 2) Développez les bases de données. Selon la base de données, sélectionnez une base de données utilisateur ou développez Bases de données système, puis sélectionnez une base de données système. 3) Cliquez avec le bouton droit sur la base de données , pointez sur Tâches, puis cliquez sur Restaurer." NE PAS! Vous ne pouvez pas cliquer avec le bouton droit sur une base de données qui n'existe pas! Vous essayez, après tout, de restaurer ou d'importer la base de données donnée. Comment pouvez-vous cliquer avec le bouton droit sur une base de données qui n'est pas chargée? Bizarre de MSDN, et aggravant que la fonctionnalité de restauration dans SSMS est indiquée mais ne fonctionne pas. Pourquoi? Heureusement, les commandes SQL que d'autres donnent ici fonctionnent.
Nicholas Petersen
14
Il existe un article différent pour la restauration dans une nouvelle base de données trouvée ici: msdn.microsoft.com/en-us/library/ms186390(v=sql.90).aspx
Jon Schoning
35
RESTORE FILELISTONLY 
FROM DISK = 'D:\3.0 Databases\DB.bak' 

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak' 

et vous devez déplacer les fichiers mdf, ndf et ldf appropriés en utilisant

 With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
 Move 'secondarydatafile'To 'D:\DB\data1.ndf', 
 Move 'logfilename' To 'D:\DB\log.ldf'
RameshVel
la source
1
Cela m'a été très utile car je voulais restaurer un fichier .bak sur un conteneur Docker sql avec un hôte macOS à l'aide d'Azure Data Studio. Tout ce que j'avais à faire était de copier le .bak dans le conteneur, d'ajuster le chemin d'accès et de passer à /, et j'ai pu restaurer avec succès.
andrewb
Heureux que cela ait aidé @andrewb :)
RameshVel
30

Vous pouvez simplement restaurer ces fichiers de sauvegarde de base de données à l'aide de méthodes SQL Server natives, ou utiliser l' outil de restauration ApexSQL pour attacher rapidement et virtuellement les fichiers et y accéder en tant que bases de données entièrement restaurées.

Avertissement: je travaille en tant qu'ingénieur de support produit chez ApexSQL

Ivan Stankovic
la source
18

Au lieu de choisir Restaurer la base de données ..., sélectionnez Restaurer les fichiers et les groupes de fichiers ...

Entrez ensuite un nom de base de données, sélectionnez votre chemin de fichier .bak comme source, cochez la case de restauration, puis cliquez sur OK. Si le fichier .bak est valide, cela fonctionnera.

(Les noms des options de restauration SQL Server ne sont pas intuitifs pour ce qui devrait être une tâche très simple.)

James Lawruk
la source
C'est un bon conseil, je l'ai fait et il a été signalé que la restauration avait réussi. Mais un petit problème persiste ... la base de données n'est pas répertoriée dans l'explorateur d'objets. J'essaie de "joindre", et il a même le bon fichier .mdf disponible (je suppose un produit de la restauration). Si j'essaie de l'attacher, il renvoie une erreur indiquant qu'il est déjà utilisé. Avez-vous des conseils pour cette étape?
AlanSE
Assurez-vous de faire un rafraîchissement à la fin pour voir votre nouvelle base de données. Cela peut être la solution la plus rapide pour être opérationnel.
demongolem
C'est l'option qui a fonctionné pour moi lorsque je voulais importer la même base de données .bak en tant que nouvelle base de données localement
Gurnzbot
7
  1. Connectez-vous au serveur sur lequel vous souhaitez stocker votre base de données
  2. Cliquez avec le bouton droit sur la base de données
  3. Cliquez sur Restaurer
  4. Choisissez le bouton radio Appareil sous la section source
  5. Cliquez sur Ajouter.
  6. Accédez au chemin où votre fichier .bak est stocké, sélectionnez-le et cliquez sur OK
  7. Entrez la destination de votre DB
  8. Entrez le nom sous lequel vous souhaitez stocker votre base de données
  9. Cliquez sur OK

Terminé

Yash Saraiya
la source
4

Utilisez simplement

sp_restoredb 'Votre nom de base de données', 'Emplacement à partir duquel vous souhaitez restaurer'

Exemple: sp_restoredb 'omDB', 'D: \ abc.bak'

Omprakash tomar
la source
quelle est la différence entre cela et RESTORE DATABASEcomme dans msdn.microsoft.com/en-us/library/ms178099(v=sql.105).aspx ?
unhammer
1
La restauration de la base de données n'effectue une opération de restauration que si la structure de votre base de données est identique à celle du fichier de sauvegarde, mais sp_restoredbeffectuez la restauration même votre base de données ayant une structure différente ou totalement vide (nouvelle).
Omprakash tomar
3
  1. Copiez votre fichier de sauvegarde .bak à l'emplacement suivant de votre ordinateur: C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Connectez-vous au serveur sur lequel vous souhaitez stocker votre base de données
  3. Cliquez avec le bouton droit sur la base de données
  4. Cliquez sur Restaurer
  5. Choisissez le bouton radio Appareil sous la section source
  6. Cliquez sur Ajouter.
  7. Accédez au chemin où votre fichier .bak est stocké, sélectionnez-le et cliquez sur OK
  8. Entrez la destination de votre DB
  9. Entrez le nom sous lequel vous souhaitez stocker votre base de données
  10. Cliquez sur OK

Les solutions ci-dessus n'ont pas permis de savoir où conserver votre fichier de sauvegarde (.bak). Cela devrait faire l'affaire. Ça a marché pour moi.

Madhumita
la source
2

Sur Microsoft SQL Server Management Studio 2019:

entrez la description de l'image ici

Dans la fenêtre Restaurer la base de données:

  1. Choisissez l'appareil

  2. Choisissez Ajouter et choisissez le fichier cible

  3. OK pour confirmer

  4. OK pour confirmer la restauration

entrez la description de l'image ici

Weky
la source
1

Vous pouvez utiliser le package de nœuds, si vous devez souvent restaurer des bases de données au cours du processus de développement.

Installer:

npm install -g sql-bak-restore

Usage:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

Arguments:

  • bakpath, chemin d'accès relatif ou absolu au fichier
  • dbName, dans quelle base de données restaurer (!! la base de données avec ce nom sera supprimée si elle existe !!)
  • oldDbName, nom de la base de données (si vous ne savez pas, spécifiez quelque chose et exécutez, vous verrez les bases de données disponibles après l'exécution.)
  • propriétaire, nom_utilisateur pour créer et lui accorder les privilèges db_owner (mot de passe "1")

!! L' utilitaire de ligne de commande sqlcmd doit se trouver dans votre variable PATH.

https://github.com/vladimirbuskin/sql-bak-restore/

Vladimir Buskin
la source