在还原数据库的时候,会遇到如下提示,设备 \'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
脚本文件。
4、找到你这个sql2012数据库在电脑中的位置。 右键这个数据库-文件 会有路径,复制出这两个文件来。 至此 sqlserver2012的电脑操作完成
5、把上面得到的script.sql 文件和两个数据源文件复制到sql2008所在的电脑中。在sql2008中 新建-查询管理器。把script.sql拖进去,会看到代码。
注意绿色部分。此时显示的数据库文件位置是sql2012电脑的位置。我们需要把这两个地址改为 sql2008R2 中 你复制过来的那两个源文件的地址即可。运行F5执行 成功。