一、背景

由于公司的项目要部署到服务器上,在我电脑上数据库版本为SQL Server 2012 R2,但服务器上的数据库版本为SQL Server 2008。一开始我天真的认为把数据库分离用mdf文件在服务器上附加就可以完成,但结果可想而知,没遇到这种情况的我,又尝试了还原、备份,还是不能移植,随后通过百度学习了 运用数据库生成脚本 来完成。

解决方法参考网址:https://www.baidu.com/link?url=LSk2mZ5UT9CGCJ1xsjOiTo9dPmrhqB_OaLROiyZxfUHTKkHGOu1jeh7ye4twzh3KhOwdqOcSchYw6xF8SUySla&wd=&eqid=f30d2da200146648000000045e4ddca6

 

二、解决方法

    2.1 右击需要降级的数据库,点击任务(分离、备份、还原、生成脚本操作都在任务中)

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_数据

 

    2.2 在任务的二级菜单中,找到我们要用的生成脚本

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_sqlserver_02

 

    2.3 在弹出的页面中(生成和发布脚本),当前为简介页面,作为向导页面,展示用户生成脚本的步奏,直接点击下一步即可

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_sqlserver_03

 

    2.4 生成和发布脚本页面,点击选择对象

          编写脚本对象:整个库 ——选择编写整个数据库及所有数据库对象的脚本

                                      单个表——选择选择特定数据库对象——后选中你要生成脚本的数据表

          选定完成后,点击下一步按钮。

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_数据库_04

 

    2.5 点击设置脚本编写选项

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_服务器_05

          点击高级,在弹出的选项框中找到Script for Server Version选项

          向下兼容,不向上,所以只能看到当前数据库版本之前的Version

          选择好对应数据库的版本号

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_服务器_06

          第二个要更改的地方是要编写脚本的数据的类型

          架构和数据:建库建表及其中的数据

          仅限架构:建库建表,里面没有数据

          仅限数据:只生成数据的脚本

          我们这边要移植整个数据库,所以选择架构和数据

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_sqlserver_07

 

        选择文件名,选择脚本存放的位置,并且起一个名字,你可以根据你要生成的数据库版本起

          如:数据库名for版本(详细一点可以是:数据库名 + 当前版本 + for + 目标版本)

          

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_服务器_08

         

    2.5 点击下一步,下一步,然后单击完成按钮即可完成脚本的生成及保存。

          这样就完成了生成脚本,现在你获得了一个后缀为.sql的文件。

 

三、服务器上运用

    3.1 在服务器上点击文件,打开文件SQL 脚本,点击执行SQL脚本,执行成功。

sqlserver如何将高版本的备份的数据库restore到低版本中 sqlserver2012备份还原到2008_服务器_09

    3.2 正常在3.1就已经结束,但有的数据库脚本内容比较庞大,会遇到out of memory 内容不足的问题

          出现此错误主要是因为.sql的脚本文件过大(一般都超过100M)造成内存无法处理这么多的数据。

          我这边是把脚本分段执行,避免造成内存无法处理的情况。

 

我是毕业半年的新人,想把自己遇到的问题记录下来,也当是给自己的做一次温故,希望这篇文章对你有帮助。