web-dev-qa-db-fra.com

Création d'une nouvelle base de données à partir d'une sauvegarde d'une autre base de données sur le même serveur?

J'essaie de créer une nouvelle base de données à partir d'une ancienne sauvegarde de la base de données sur le même serveur. Lorsque j'utilise studio de gestion du serveur SQL et que je tente de restaurer la nouvelle base de données à partir de la sauvegarde, le message d'erreur suivant s'affiche:

System.Data.SqlClient.SqlError: The backup set holds a backup of a database 
other than the existing 'test' database. (Microsoft.SqlServer.Smo)

après avoir googlé autour j'ai trouvé ce morceau de code

    RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak'

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',

MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf'
GO

Je me demandais si les instructions de déplacement gâcheraient la base de données dont la sauvegarde provenait sur ce serveur?

Merci, toute aide appréciée.

62
Flywheel

Je pense que c'est plus facile que ça.

  • Commencez par créer une base de données cible vide.
  • Ensuite, dans l'assistant de restauration "SQL Server Management Studio", recherchez l'option permettant de remplacer la base de données cible. Il se trouve dans l'onglet "Options" et s'appelle "Ecraser la base de données existante (WITH REPLACE)". Vérifie ça.
  • N'oubliez pas de sélectionner les fichiers cibles dans la page 'Fichiers'.

Vous pouvez modifier les "onglets" à gauche de l'assistant (Général, Fichiers, Options)

115
dani herrera

Il est même possible de restaurer sans créer de base de données vierge.

Dans SQL Server Management Studio, cliquez avec le bouton droit de la souris sur bases de données et sélectionnez Restaurer la base de données ... enter image description here

Dans la boîte de dialogue Restaurer la base de données, , sélectionnez la base de données source ou le périphérique normalement. Une fois la base de données source sélectionnée, SSMS renseignera le nom de la base de données de destination en fonction du nom d'origine de la base de données.

Il est alors possible de changer le nom de la base de données et d'entrer un nouveau nom de base de données de destination .

enter image description here

Avec cette approche, vous n'avez même pas besoin d'accéder à l'onglet Options et de cliquer sur l'option "Remplacer la base de données existante".

En outre, les fichiers de base de données seront nommés de manière cohérente avec votre nouveau nom de base de données et vous avez toujours la possibilité de modifier les noms de fichier si vous le souhaitez.

44
Catch22

Vérifier la base de données Options Over Write a fonctionné pour moi :)

enter image description here

8
Kbdavis07

Pensez-y comme une archive. MyDB.Bak contient MyDB.mdf et MyDB.ldf.

Restore with Move pour dire que HerDB saisit essentiellement MyDB.mdf (et ldf) de la sauvegarde et les copie sous les noms HerDB.mdf et ldf.

Donc, si vous avez déjà une MyDb sur l'instance de serveur que vous restaurez, elle ne sera pas touchée.

1
Tony Hopkinson