由于SQLServer不支持从高版本还原到低版本,想实现从2014版本数据库还原到2012,就要通过其它手段来实现。还好SQLServer提供了两个工具:
a、将数据库的对象生成脚本;
b、大名鼎鼎的sqlcmd;
具体过程如下:
1、打开“生成和创建脚本”向导:

2、选择需要生成脚本的数据库对象:

3、选择“保存到文件”,选择脚本保存的目录,并点击“高级”进行脚本生成配置:

4、“高级脚本编写选项”:

可按需要对选项进行设置,其中有几个选项需要特别注意下:
编写触发器脚本 TRUE
编写索引脚本 TRUE
服务器版脚本 SQL Server 2012
要编写脚本的数据的类型 仅限架构
其中“要编写脚本的数据的类型”可以同时生成架构和数据,这个要看数据库的大小,如果比较大,建议还是分成不同的文件,方便导入。


5、使用SQLCMD导入数据:
SQLCMD是SQLServer提供的,可用在命令行下执行脚本的应用。可查看其用法:

由于我将创建数据库结构和导入数据的分成不同的文件,另外,一些表数据比较多的,也拆分成不同的文件,将其全部放到同一个.bat文件下,统一执行即可。

如示例所示:
-S 指定数据库实例
-U 指定登录名
-P 指定登录密码
-i 指定执行的文件
6、对导入过程的验证:
在创建结构和导入数据的过程,很有可能出错,而且输出的内容比较多,怎么快速验证有没有错误呢。在执行.bat的时候,将输出结果,保存到文件上,如下:
还原数据库.bat > log.txt
这样,所有的输出都会重定向到log.txt中。借助emeditor,即可快速检查是否有问题:
a、将不需要的日志替换掉成空格,比如INSERT的日志“(1 行受影响)”;
b、将多个空行替换为一个空行;
这样得到的日志就大大减少,可以快速验证导入过程是否存在问题了。