I have a SQL2005 Express database that I would like to create a copy of on the same instance. How do you go about doing this with a script?
I already have a script for generating the backup, but the restore is failing...
THE ERROR:
Msg 3234, Level 16, State 2, Line 2 Logical file 'MyDB_data' is not part of database 'MyDB_Test'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 2 RESTORE DATABASE is terminating abnormally.
THE RESOLUTION:
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;
THE REASON:
I did not identify the logical path correctly in my first attempt.
Here are some alternatives:
Database restore (from .BAK) softwares::
1) SqlRestoreSetup
2) Apex SQL Restore
RESTORE FILELISTONLY
is an informational command and is not required to perform a restore. A user can use this to figure out what the logical names are for the data files, that can be used with theMOVE
commands to restore the database to a new location.As suggested by the error message you need to use
RESTORE FILELISTONLY
to see what the logical names for the database are. Your restore command has these wrong.Here is a working example of what you need to do:
How to: Restore a Database to a New Location and Name (Transact-SQL)