设备上的媒体系列格式不正确。SQL Server 无法处理此媒体系列

Fun*_*nky 33 sql-server backup restore

我正在尝试在 SQL 服务器中恢复 .BAK,但出现以下错误:

消息 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'
Run Code Online (Sandbox Code Playgroud)

有没有人有什么建议?我已经读到 bak 可能已损坏,它是由另一位从事该项目的 DVD 开发人员发送给我的。

小智 12

如果您尝试将较新的数据库恢复到较旧的 SQL 版本,您始终可以简单地在较旧的 SQL 版本中手动创建数据库并利用任务 - 生成脚本并包含数据。

Save to File --> Advanced --> Types of data to script --> Schema and data

还要确保Script for Server Version

如果您尝试从较新的 SQL Server 迁移到较旧的版本,这可能是唯一受支持的选项。

相关:将 SQL Server 2012 备份还原到 SQL Server 2008 数据库?


Ken*_*her 7

我发现这表明您的备份文件已损坏。可能由 FTP 以文本模式而不是二进制传输。

这个博客,其中列出如何别人定了同样的问题。

  • “列出其他人如何解决同一问题”通常在 SE 网站上,您应该发布相关内容,例如博客文章;它可以防止链接衰减 (9认同)

小智 7

在源 SQL Server 和目标 SQL Server 上运行以下脚本,版本应匹配或目标应具有更高版本的 SQL Server,否则无法还原 .bak 文件:

SELECT @@Version
Run Code Online (Sandbox Code Playgroud)


小智 6

我遇到了同样的问题,我的脚本指定了不正确的 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
Run Code Online (Sandbox Code Playgroud)

我不确定 RESTORE 命令是否自动检测或为此设置默认值...