sql - script - ¿Cómo hacer una copia de seguridad y restaurar una base de datos como una copia en el mismo servidor?
restaurar varias bases de datos sql server (3)
Aquí hay algunas alternativas:
Software de restauración de base de datos (desde .BAK) ::
Tengo una base de datos SQL2005 Express de la que me gustaría crear una copia en la misma instancia. ¿Cómo se hace esto con un guión?
Ya tengo un script para generar la copia de seguridad, pero la restauración está fallando ...
EL ERROR:
Msj 3234, Nivel 16, Estado 2, Línea 2 El archivo lógico ''MyDB_data'' no forma parte de la base de datos ''MyDB_Test''. Utilice RESTORE FILELISTONLY para enumerar los nombres de archivos lógicos.
Mensaje 3013, nivel 16, estado 1, línea 2 RESTORE DATABASE está terminando de manera anormal.
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é correctamente el camino lógico en mi primer intento.
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 lo 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 de restauración tiene estos errores.
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''