SQL Server数据库恢复错误:指定的铸型无效。(SqlManagerUI)

我的生产网站使用SQL Server 2008 R2 Standard(版本10.50.1600.1),我的本地主机使用 SQL Server Express edition with Advanced Services (v10.50.1600.1) 用于我的本地主机作为数据库。

几天前,我的SQL Server崩溃了,我不得不在我的本地主机上安装一个新的2008 R2 Express版本。当我恢复Express版的一些旧版本时,它工作得很好,但当我试图从生产服务器的.bak文件中恢复数据库时,它导致了以下错误。

Error:指明的投掷物无效。(SqlManagerUI)

而当我试图用命令恢复数据库时

Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'

它产生了一个不同的错误

*Msg 3154, Level 16, State 4, Line 1 该备份集持有除现有'出版物'数据库以外的数据库的备份。
Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE正在异常地终止。

我已经交叉检查了这些版本。在我看来,它们都是匹配的,如下图所示

以前我可以将一个数据库从标准版恢复到快速版,但现在失败了。我删除了数据库并试图重新创建它。这也失败了。

我不确定我做错了什么。我希望在这方面得到帮助

问题已解决,因为似乎.bak文件已损坏。当我用不同的文件尝试时,它是有效的。

可能是因为将SQL Server 2012版本的备份文件恢复到SQL Server 2008 R2甚至更少。

评论(5)
解决办法

GUI有时会很善变。你在使用T-SQL时得到的错误是因为你试图覆盖一个现有的数据库,但没有指定要覆盖/替换现有的数据库。下面的方法可能有用。

Use Master
Go
RESTORE DATABASE Publications
  FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
  WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
评论(6)

终于在恢复时让这个错误消失了。 我因为沮丧而转到了SQL2012,但我想这在2008R2上可能仍然有效。 我不得不使用逻辑名称。

RESTORE FILELISTONLY
FROM DISK = ‘location of your.bak file’

然后我使用逻辑名称用MOVE运行了一个恢复语句。

RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'

当它完成恢复时,我几乎要喜极而泣了。

好运!

评论(0)