Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come si esegue il backup e il ripristino di un database come copia sullo stesso server?

RESTORE FILELISTONLY è un comando informativo e non è necessario per eseguire un ripristino. Un utente può usarlo per capire quali sono i nomi logici per i file di dati, che possono essere utilizzati con MOVE comandi per ripristinare il database in una nuova posizione.

Come suggerito dal messaggio di errore è necessario utilizzare RESTORE FILELISTONLY per vedere quali sono i nomi logici per il database. Il tuo comando di ripristino li ha sbagliati.

Ecco un esempio funzionante di cosa devi fare:

--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'