数据库低版本附加高版本的问题,数据库版本附加
我的机房收费系统是在自己笔记本上敲的,敲完了以后把本上数据库拷了出来,放到台式机上,准备通过台式机来验收系统。当我附加数据库的时候,提示 “数据库'charge_sys'的版本为661,无法打开。此服务器支持655版及更低版本。不支持降级路径。”
这是因为我本上的SQL是2008R2版的,而机房的电脑上的数据库是2008版的(当然,2008版以下的也会出现这种情况)。暂时我知道的解决方法只有 两种:
一、就是把低版本电脑的SQL升级,升到高版本就可以了。但这样不仅浪费时间,而且很麻烦。
二、在高版本电脑上把要用的数据库生成较低的脚本。然后在低版本的数据库里面创建新的同名数据库,执行在高版本电脑生成的脚本。步骤如下:
1、右击要生成脚本的数据库,选择任务--生成脚本
2、进入生成脚本面--下一步
3、 选择特定数据库对象--表--全选--下一步
4、选择高级(注意文件名那里是生成脚本的路径)
·
5、在高级页面“为服务器版本编写脚本”中选择要编写脚本的版本--确定--下一步
6、选择下一步
7、等待系统保存和发布脚本完成--完成
8、在较低版本的电脑上创建同名的数据库,然后双击打开生成的脚本文件,执行。
打开刚刚创建的数据库,看看数据库中是不是有了表了。只是表中的内容没有了,需要重新添加。好了,准备验收。
1.打开SQL SERVER 2008 的manger studio
-- 打开"对象资源管理器", 连接到实例
-- 右键要转到2005的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2005的库
-- 勾选"为所选数据库中的所有对象编写脚本"5
-- 在接下来的"选择脚本选项"中, 将”编写创建数据库的脚本”设为True,找到"为服务器版本编写脚本"项, 选择"SQL Server 2005"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件
2. 在2005中创建目标数据库
在查询分析器(或2008的manger studio在打开脚本文件), 连接到SQL Server 2005,执行上面生成的脚本.以创建一个新的数据库
3. 将数据从2008导到2005
打开SQL Server 2005的企业管理器
-- 右键要导入数据的数据库
-- 任务
-- 导入数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择数据源"步骤中, 连接到 2005, 并选择源数据库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成
从SQL2008数据库导出数据到另外一个数据库,如果数据库中有自增主键,那么在导出的时候会报一个错误
解决:在数据库导入"选择源表和源视图"->点击对应表后的“编辑映射”按钮->勾选“启用标识列插入”->导入即可。
是这样的,662是SQL Server 2008 SP2以后的数据库版本号,SP2之前的SQL Server 2008
的数据库版本好是655,而661是SQL Server 2008 R2的数据库版本号,本身SQL Server 2008 R2的版本要比SQL Server 2008 要高,按常理661版的数据库文件是不能附加到支持655版本号的SQL Server 2008里的。至于出现这个蛋疼的提示是因为微软在SQL Server 2008 SP2里加入了15k分区数的功能,而发布SP2之前就已经发布了SQL Server 2008 R2了,由于SQL Server 2008 R2 RTM并不支持15k分区的功能,如果按常规SQL Server 2008还保持655的版本号的话就可能会出现附加15k分区的数据文件到SQL Server
2008 R2 RTM中,这肯定是不能附加的,所以微软为了解决这个难题,就打破常规,SQL Server 2008 SP2里将数据库的版本号改为662,这样,由SQL Server 2008 R2 RTM的数据库版本号比SQL Server 2008 SP2的低,所以自然就不能附加了,避免了麻烦,不过为了一15k分区的功能改变了版本号带来的副作用就像楼主这种情况了。
这时问题的根本缘由。
其实说白了,你是拿SQL Server 2008 R2的数据库附加到SQL Server 2008中,这肯定是不行的。要么将你现在的数据库实例升级到 SQL Server 2008 R2并安装最新的SP补丁之后再附加。要么将chat数据库附加到SQL Server 2008 R2版的数据库实例里,生成SQL Server 2008版的脚本文件,使用脚本文件部署到SQL Server 2008 SP2里。
至于前边有朋友说用备份的方式,如果理解了我前边说的就知道肯定也是行不通的。