sql 2008 r2 迁移到 sql 2005

背景:开发环境是 sql2008 r2, 部署环境是sql 2005,需要从08高版本迁移到05低版本

解决步骤:

条条大路通罗马,为了达到这个目标,我们一共试验了3种方式,从简到难依次是

1:在sql 05服务器上附加 08数据库文件

(奇迹,发生吧。。)

p1

 

sql 2008 r2的版本就是661,从错误消息中,我们可以看出,出错原因是08无法降级给05使用

05向前兼容08,没戏。= .= ,方法1 pass.

 

2:通过sql 2008的复制数据库功能,将数据库复制到05上

(这个功能需要目标服务器,本文中是sql 2005服务器开启sql代理服务,并开启远程连接,如何开启远程连接请参考之前的文章《sql server 2005 开启远程连接》)

具体的复制过程不再赘述,一直下一步下一步,知道卡在如下位置,无法再继续下一步了

未命名

 

看下问题原因出在存储格式上,VarDecimal是 sql server 2005 sp2中出现的一种存储方式,目的是为了减少数据库占用的存储空间,可是目标服务器上没打补丁包,在无法操作目标服务器的情况下, 只能寄希望于禁用 vardecimal存储格式,网上搜了下,发现有相关的命令如下

1:查询所有开启了vardecimal服务
exec sp_db_vardecimal_storage_format

2:打开/关闭vardecimal
exec sp_db_vardecimal_storage_format 'dbname', 'OFF'

 

命令式执行成功了,可惜数据库的存储方式的vardecimal方式还是ON的,

网上查了下,vardecimal是无法关闭的,所以方法2 pass

 

3:通过sql 2008导出数据的功能导出表结构和数据,通过生成脚本导出触发器、存储过程等功能

(这个功能需要目标服务器,本文中是sql 2005服务器开启sql代理服务,并开启远程连接,如何开启远程连接请参考之前的文章《sql server 2005 开启远程连接》)

 

以上方法均失败之后,开始使用最原始的方式,导出数据

tips:在实验中,发现目标数据库不需要开启sql代理和sql borwser服务,就可以导数据

3.1 导出表结构、约束、触发器、存储过程等框架

 该功能主要是通过SQL服务器的生产脚本的功能来实现的。

生成脚本的办法,右键要导操作的的数据库,依次点击 任务 > 生成脚本 按提示下一步。。

3.2 导出数据

导出数据方法,右键要导出数据的表 依次点击 任务 > 导出数据,按提示下一步。。。导出完毕。

 

OK 至此,我们08的数据库就这样同步到05的数据库了

 

end

posted @ 2011-12-15 17:58  谪仙  阅读(647)  评论(0编辑  收藏  举报