还原数据库失败:设备上的媒体簇的结构不正确,错误:3241
在还原数据库的时候,会遇到如下提⽰,设备 'D:\aaa.bak' 上的介质簇的结构不正确。SQL Server ⽆法处理此介质簇
产⽣的原因有3种:
⼀、备份bak⽂件和你要还原过去的程序版本不⼀致,可以通过select @@version查看2边的具体版本。⼀般⼤版本⼀致就基本没问题。⼆、备份bak⽂件拷贝的过程中损坏了或者变⼩了,⽐如原来是5G,考过去变成了4.9G,那还原肯定就要报错,解决办法就是把bak打包考过去。(⽐如有时候通过堡垒机进⾏传⽂件,或者共享传⽂件容易出现)
三、备份的bak⽂件有多个,你考的时候少考了,考得不完整导致的。
针对版本不对导致的异常(⼀般是⾼版本的数据库备份在低版本中还原,不兼容导致),可通过如下⽅式解决:
在备份的SQL Server 2012 数据库上⽣成脚本语⾔,然后在SQL Server 2008R2上执⾏。
1、⾸先把要把sql2012中要备份的数据库设置为兼容2008. 右键sql2012中的数据库Test-属性-选项看到如下图
2、右键Test-任务-⽣成脚本,下⼀步-下⼀步到达下图,点⾼级选项。把script for sql  version 改成你要降级的那个版本也就是sql2008.确定完成即可。会⽣成⼀个script.sql
脚本⽂件。
3、下⼀步要把sqlserver2012源⽂件复制到另外⼀个电脑上。由于SqlServer正在运⾏是⽆法复制的。所以⾸先要停⽌sqlserver服务。
4、到你这个sql2012数据库在电脑中的位置。右键这个数据库-⽂件会有路径,复制出这两个⽂件来。⾄此 sqlserver2012的电脑操作完成
sqlserver2012数据库还原5、把上⾯得到的script.sql ⽂件和两个数据源⽂件复制到sql2008所在的电脑中。在sql2008中新建-查询管理器。把script.sql拖进去,会看到代码。
注意绿⾊部分。此时显⽰的数据库⽂件位置是sql2012电脑的位置。我们需要把这两个地址改为 sql2008R2 中你复制过来的那两个源⽂件的地址即可。运⾏F5执⾏成功。