消息3241,级别16,状态7,行1设备'c:\ glyn上的媒体系列\ JA.bak'格式错误。 SQL Server无法处理此媒体系列。消息3013,级别16,状态1,第1行RESTORE DATABASE异常终止。
我尝试使用2012、2008甚至2005进行还原,但是没有任何效果,我使用了以下查询并通过
Tasks >> Back up
进行操作,但没有任何效果,这是我的SQL:RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'
有人有什么建议吗?我已经阅读过bak可能已损坏,它是由另一位从事该项目的DVD开发人员发送给我的。
#1 楼
如果尝试将较新的数据库还原到较旧的SQL版本,则始终可以简单地在较旧的SQL版本中手动创建数据库并利用任务-生成脚本并包含数据。保存到文件- >高级->要编写脚本的数据类型->模式和数据。
还请确保使用服务器版本的脚本。
如果可能的话,这可能是唯一受支持的选项您正在尝试从新的SQL Server到旧版本。
相关:将SQL Server 2012备份还原到SQL Server 2008数据库?
评论
看起来像是骇客,但我想这对我来说可以解决此问题。
– jpierson
16-10-31在19:12
#2 楼
我发现这表明您的备份文件已损坏。可能是通过FTP以文本方式而不是二进制方式传输的。此博客列出了其他人如何解决同一问题。
评论
通常,在SE网站上“列出其他人如何解决相同的问题”,您应该发布相关内容,例如博客文章;它防止链接衰减
– jcollum
2014年12月31日20:57在
#3 楼
我遇到了同样的问题,我的脚本指定了错误的FILE类型,我使用的是.bak
,而我指定的是FILE = 2
,即.trn
。USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
FILE = 1, -- 1 = .bak, 2 = .trn type backup
MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
NOUNLOAD,
STATS = 5
GO
我不是确保RESTORE命令是否为此自动检测或设置默认值...
评论
该错误解决了这个问题,问题是当您使用GUI还原数据库时,SQL Managment Studio没有为您提供详细信息。如果尝试使用t-sql脚本还原,则sql server将报告您使用MOVE选项。
– dlopezgonzalez
2015年12月1日,9:37
#4 楼
在源和目标SQL Server上运行以下脚本,版本应匹配,或者目标应具有更高版本的SQL Server,否则您将无法还原.bak文件:SELECT @@Version
评论
关于版本的观点已经在其他答案中重复了。
– Andriy M
16年5月21日在23:01
@AndriyM,您是对的,但没有采取实际行动。我们不是在谈论历史或地理,应该提到一些命令或代码。
– Shadi Namrouti
16年5月22日在10:45
#5 楼
唯一的原因是您尝试还原较低版本的备份,请参考:http://www.sqlservercentral.com/Forums/Topic1675066-1550-1.aspx?Update=1
#6 楼
删除损坏的文件并重新运行备份评论
您好,欢迎来到该网站。我们想要更多地了解为什么或如何工作。
–汤姆五世
16-10-27在20:27
评论
我已经在sqlbak.com/blog/media-family-on-device-is-incorrectly-formed中找到了解决方案