¿Cómo hacer una copia de seguridad y restaurar una base de datos como una copia en el mismo servidor?


Tengo una base de datos SQL2005 Express de la que me gustaría crear una copia en la misma instancia. ¿Cómo haces esto con un guión?

Ya tengo un script para generar la copia de seguridad, pero la restauración está fallando...

EL ERROR:

Msg 3234, Nivel 16, Estado 2, Línea 2 El archivo lógico 'MyDB_data' no es parte de la base de datos 'MyDB_Test'. Usar RESTAURAR FILELISTONLY para listar el archivo lógico nombre.
Msg 3013, Nivel 16, Estado 1, Línea 2 RESTAURAR BASE de DATOS está terminando anormalmente.

LA RESOLUCIÓN:

RESTORE DATABASE [MyDB_Test]
FROM DISK = 'C:\temp\SQL\MyDB.bak'
WITH
MOVE 'MyDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test.mdf'
, MOVE 'MyDB_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test_log.ldf'
, REPLACE;

LA RAZÓN:
No identifiqué el camino lógico correctamente en mi primer intento.

Author: Nick Kavadias, 2009-09-01

3 answers

RESTORE FILELISTONLY es un comando informativo y no es necesario para realizar una restauración. Un usuario puede usar esto para averiguar cuáles son los nombres lógicos para los archivos de datos, que se pueden usar con los comandos MOVE para restaurar la base de datos a una nueva ubicación.

Como sugiere el mensaje de error, debe usar RESTORE FILELISTONLY para ver cuáles son los nombres lógicos de la base de datos. Tu comando restore las tiene mal.

Aquí hay un ejemplo práctico de lo que necesita hacer:

--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
Author: Nick Kavadias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-08 13:03:42
 6
Author: Derek Swingley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-01 05:18:36

Aquí hay algunas alternativas:

Restauración de base de datos (desde .BAK) softwares::

1) SqlRestoreSetup

2) Apex SQL Restore

 0
Author: T.Todua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 14:00:11