微软的软件设计方案基本上都是新版本兼容旧版本,旧版本不兼容新版本。
所以,直接通过 【数据库备份】的.bak文件,来进行【数据库还原】的方式是不支持的。
方案一:直接使用生成的完整数据库sql来还原
{ 仅用于小数据库(数据库完整导出的.sql文件小于100M) }
整体思路: 通过新版本的SQLServer生成兼容低版本的.sql脚本,然后将sql脚本实现在低版本SQLServer上执行。从而创建数据库。
假设:需要实现的功能是 把sqlserver2016(2012)的数据库备份到sqlserver2012(2008),数据库名为Test,并且这两个数据库在不同的服务器上。
1. 打开SQL Server Management Studio (下方简称SSMS),链接新版本的数据库服务器;
2. 右键点击需要导出的数据库Test-属性-选项 看到如下图

2. 右键Test-任务-生成脚本,下一步-下一步到达下图,点【高级】选项。把【script for sql version】改成你要降级的那个版本 也就是【sql2008】。确定完成即可。会生成一个【script.sql】脚本文件。


3.下一步要把sqlserver2012源文件复制到另外一个电脑上。由于SqlServer正在运行是无法复制的。所以首先要【停止】sqlserver服务。

4. 找到sql2012数据库在电脑中的位置。 右键【数据库】-【文件】会有路径,复制出这两个文件来。 至此sqlserver2012的电脑操作完成。

5. 把上面得到的【script.sql】文件和两个数据源文件复制到sql2008所在的电脑中。在sql2008中【新建】-【查询管理器】。把【script.sql】拖进去,会看到代码。

(注意绿色部分。此时显示的数据库文件位置是sql2012电脑的位置。需要把这两个地址改为 sql2008 中 复制过来的那两个源文件的地址即可。按【F5】键执行,即可完成数据库从SQL2012到SQL2008的降级。 )
方案二:使用CMD命令
很多时候,我们的数据库比较大,通过数据库生成的.sql脚本(>100M)在SQL Server manager Studio(SSMS)中打开不了,提示“文件太大,无法打开” 。
这时候,我们就需要通过命令行(cmd命令提示符)来执行sql脚本的还原数据库了。
特别说明:-d 后面跟的数据库名称,必须是目标数据库中已经存在的数据库!!!请先在SqlServer中创建一个空白数据库。
在开始菜单上右击,单击 “命令提示符(管理员)”打开
注意,如果脚本太大,可以关闭stderr消息,以加快执行速度。
前提: 备份数据库,生成sql脚本备用
1. 右击数据库 –> 任务 –> 生成脚本。
2. 在生成脚本的“选择对象”步骤选择“编写整个数据库及所有数据库对象的脚本选项”。下一步。
3. 在生成脚本的“设置脚本编写选项”界面, 点击【高级】按钮进入高级选项。
● 设置 “编写USE DATABASE 脚本” 和 “架构限定对象名称” 选项为False;
● 并将“服务器版脚本” 选择为你的低版本数据库的版本。生成脚本。
生成脚本完成。