Comment sauvegarder et restaurer une base de données en tant que copie sur le même serveur?

j'ai une base de données SQL2005 Express dont je voudrais créer une copie sur la même instance. Comment tu fais avec un script?

j'ai déjà un script pour générer la sauvegarde, mais la restauration échoue...

THE ERROR:

Msg 3234, Niveau 16, État 2, Ligne 2 Le fichier logique 'MyDB_data' ne fait pas partie De La base de données 'MyDB_Test'. Utilisez la RESTAURATION FILELISTONLY pour lister le fichier logique nom.

Msg 3013, Niveau 16, État 1, La base de données de restauration de la ligne 2 se termine anormalement.

LA RÉSOLUTION:

RESTORE DATABASE [MyDB_Test]
FROM DISK = 'C:tempSQLMyDB.bak'
WITH
MOVE 'MyDB' TO 'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATAMyDB_Test.mdf'
, MOVE 'MyDB_log' TO 'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATAMyDB_Test_log.ldf'
, REPLACE;

THE REASON:

Je n'ai pas d'identifier le chemin logique correctement dans ma première tentative.

23
demandé sur Nick Kavadias 2009-09-01 08:30:07

3 réponses

RESTORE FILELISTONLY est une commande informative et n'est pas nécessaire pour effectuer une restauration. Un utilisateur peut utiliser ceci pour comprendre quels sont les noms logiques pour les fichiers de données, qui peuvent être utilisés avec le MOVE commandes pour restaurer la base de données à un nouvel emplacement.

Comme le suggère le message d'erreur que vous devez utiliser RESTORE FILELISTONLY pour voir quels sont les noms logiques de la base de données. Votre commande de restauration se trompe.

voici un exemple pratique de ce que vous devez faire faire:

--backup the database
backup database test1 to disk='c:\test1_full.bak'

-- use the filelistonly command to work out  what the logical names 
-- are to use in the MOVE commands.  the logical name needs to
-- stay the same, the physical name can change
restore filelistonly from disk='c:\test1_full.bak'
 --------------------------------------------------
|  LogicalName  |           PhysicalName           |
 --------------------------------------------------
| test1         | C:\mssql\data\test1.mdf          |
| test1_log     | C:\mssql\data\test1_log.ldf      |
 -------------------------------------------------

restore database test2 from disk='c:\test1_full.bak'
with move 'test1' to 'C:\mssql\data\test2.mdf',
move 'test1_log' to 'C:\mssql\data\test2.ldf'
40
répondu Nick Kavadias 2013-12-08 13:03:42

Voici quelques alternatives:

restauration de la base de données (à partir de .Bak) logiciels::

1) SqlRestoreSetup

2)Apex SQL Restore

0
répondu T.Todua 2014-07-23 14:00:11