sql 2008 r2 迁移到 sql 2005
背景:开发环境是 sql2008 r2, 部署环境是sql 2005,需要从08高版本迁移到05低版本
解决步骤:
条条大路通罗马,为了达到这个目标,我们一共试验了3种方式,从简到难依次是
1:在sql 05服务器上附加 08数据库文件
(奇迹,发生吧。。)
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