近期需要将一个SQL Server 2012数据库降级到SQL Server 2008,记录一下过程。
0x00 先决条件
- 两个不同版本的数据库实例
- 高版本的数据库
- SSMS
0x01 步骤
导出数据库结构
连接到高版本数据库,右键需要降级的数据库,点击任务-生成脚本。
按需要选择,这里保持默认的为整个数据库生成。
重点1:点击高级,修改脚本的目标SQL Server版本!毕竟你也不想生成出来给低版本用的脚本用了高版本特性吧?
保存方式选择另存为脚本文件。
下一步,完成,等待脚本生成就可以了。有些SSMS版本有bug,最后一步保存到文件会一直显示未进行。如果等个几分钟还是卡在这里,并且脚本已经生成出来了,那就可以直接关闭这个窗口,进行下一步。
最后按需要对脚本进行一些修改,如数据库的文件路径、数据库名、用户、schema等。
导入数据库结构
连接到低版本数据库,执行刚刚生成出来的SQL。
可能会有报错,这个就需要自己检查是不是真的有问题了。
转移数据
连接到高版本数据库,右键需要降级的数据库,点击任务-导出数据。
配置导出数据(高版本)的数据源,数据源选择SQL Server Native Client,其他信息应该会自动填好。
配置导入数据(低版本)的数据源,数据源同样选择SQL Server Native Client,填写连接信息及需要导入的数据库。
降级的场景需要把数据原样导过去,选第一个就行。
选择需要导的表。重点2:这个列表里有视图,但是不要选择视图!刚才导数据库对象的时候已经把视图导过去了,这里选视图会报错。
如果需要的话,点击编辑映射按钮,可以映射schema。还可以选择导数据之前重建表或清空表,不过由于整个库都是新建的,没有必要。
如果碰到只读列,可勾选启用标识插入试试。
然后下一步,完成,等数据导过去就完工了。