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文件已损坏。当我用不同的文件尝试时,它是有效的。
90
3
可能是因为将SQL Server 2012版本的备份文件恢复到SQL Server 2008 R2甚至更少。
GUI有时会很善变。你在使用T-SQL时得到的错误是因为你试图覆盖一个现有的数据库,但没有指定要覆盖/替换现有的数据库。下面的方法可能有用。
终于在恢复时让这个错误消失了。 我因为沮丧而转到了SQL2012,但我想这在2008R2上可能仍然有效。 我不得不使用逻辑名称。
然后我使用逻辑名称用
MOVE
运行了一个恢复语句。当它完成恢复时,我几乎要喜极而泣了。
好运!