I'm trying to restore from a database backup to SQL Server 2008. The backup came from a different server. I'm executing the following query:
RESTORE DATABASE Database_Name
FROM DISK = 'C:\Path\To\Backup.file'
WITH REPLACE
GO
If the database does not exist, I'm getting the following error:
Msg 3118, Level 16, State 1, Line 1
The database "Database_Name" does not exist. RESTORE can only create a database when restoring either a full backup or a file backup of the primary file.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
The file is a full backup.
If the database does exist, I get the following error:
Msg 3154, Level 16, State 4, Line 1
The backup set holds a backup of a database other than the existing 'Database_Name' database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
From what I understand, WITH REPLACE
is supposed to be a workaround for this.
I'm stumped.
Best Answer
Try this:
Relevant columns for this scenario:
To restore
foo
, whether it exists or not:To restore
bar
, whether it exists or not:If you don't specify
WITH FILE
, you will get a slew of errors, depending on whether the database inPosition = 1
already exists.The lessons here:
WITH INIT
if you expect a backup file to only ever contain one copy of a backup.RESTORE HEADERONLY
and/orRESTORE FILELISTONLY
.If you show us those two columns from the output of
RESTORE HEADERONLY
and what database you are actually trying to restore, we can provide you with a specific command that should work.