高版本sql server迁移到低版本Sql Server

来源:互联网 发布:琥珀木原料淘宝价格 编辑:程序博客网 时间:2024/04/29 17:04
 

 是否大家有遇到过开始使用高版本的sql server当部署时却被告知服务器环境只能使用当前低版本的sql server,我就遇到了,我开发时使用的是sql 2008 r2 到部署时被告之段时间内不能升级到r2,只要将就部署了 。

 但高版本迁移到低版本普通方法是行不通的,

 1.我直接在sql2008附加sql2008r2的数据库,结果 “版本为 661,无法打开。此服务器支持 655 版及更低版本。不支持降级路径。” 死路一条,呵呵。

 2.在sql2008里建立新数据库,然后通过复制数据方法,结果“ LiveUpdate returned a non-critical error.  Available content updates may have failed to install.” 又是死路一条。

 3.用数据库镜像,结果“由于数据库可能有尚未备份的大容量日志记录更改,所以无法启用数据库镜像。必须在镜像上还原主体数据库的上一次日志备份。”意思是你不需要去还原,又是死路一条

4.用用导入导出的功能吧。
  这个方法关键是如何确保保留原有表结构的主键、外键等
  分两个情况,对于数据库数据量小的,可以很方便的解决
  a.小数据的情况
    1.先在低版本的服务器上建立同名的数据库。
    2.在高版本的服务器上右键点击目标数据库->任务->生成脚本
    3.在选择对象->选择特定数据库对象
    4.选择表、视图、存储过程,然后下一步
    5.关键在这,这一步里,请选择”高级“,选项里选择[编写DROP和Create脚本]项的”编写DROP和Create脚本“,以及[编写脚本和数据类型]项的“架构和数据"
    6.保存脚本
    7.在低版本的数据库下执行脚本即可。
  b.大数据情况
    按理应该也可以通过类似包含架构和数据的方式来做,但是由于包含大数据的时候脚本文件太大,无法在分析器里执行,所以我们得绕一下。
    1~4步和a情况相同
    5.这步我们选择”高级“,选项里选择[编写DROP和Create脚本]项的”编写DROP和Create脚本“,以及[编写脚本和数据类型]项的“架构"
    6.保存脚本
    7.在低版本的数据下执行脚本,注意(ALTER TABLE 表名  WITH CHECK ADD  CONSTRAINT [外键名] FOREIGN KEY(字段) REFERENCES 表名(字段))这个先不要执行。
    8.现在可以通过导入导出任务先将表的内容导入到低版本的数据库内
    9.再执行脚本内(ALTER TABLE 表名  WITH CHECK ADD  CONSTRAINT [外键名] FOREIGN KEY(字段) REFERENCES 表名(字段))这样的语句,此处将表的外键附加上。
    10.。。大功告成