在开始敲机房收费系统的时候,纠结于数据库是自己建好呢还是先用给的数据库呢?毕竟自己创建数据库的话,担心在类似于权限设置、功能设置上出现问题,最终导致系统因当初设计的小问题而出现“堆栈现象”,于是我先想着用一下TGB下发的那个’charge_sys’数据库,看看它的表是怎么分的。
谁成想,当我开始附加’charge_sys’数据库的时候,问题便来了。这是我做机房开始的第一个问题,我想必须要把它撂倒。
问题:
之前在5楼的台式机上,会出现的错误是“数据库 的版本为 661,无法打开。此服务器支持 655 版及更低版本。不支持降级路径”,但是此时我通过T-SQL 语句usemaster select @@VERSION查询版本号,Microsoft SQL Server 2008 R2 (RTM) -10.50.1617.0 (X64) 也就是说我的SQL SERVER数据库版本已经是2008 R2 (RTM)能够支持661版本了,可是下发的机房收费的数据库版本却是706的。我想这个版本为706的’charge_sys’数据库肯定不是官方的,重新找少然拷贝了一个新的数据库后,结果数据库附加成功。
这就像是OFFICE中WORD2010能打开2003中的文件,但2003却打不开2010的文件是一回事。然而在SQL SERVER中解决这个问题的办法有三种:
方法一、
直接升级数据库SQL Server 2008 (SP1)或者卸载 SQL Server2008 (SP1)后, 重新安装 Microsoft SQL Server 2008 R2 (RTM)。
当然这是针对:“数据库 的版本为 661,无法打开。此服务器支持 655 版及更低版本。不支持降级路径”
方法二、
把版本为706的数据库实例‘charge_sys’降低版本生成2008 R2 (RTM)能够支持661版本,前提是机子上得安装有支持706版和661版的SQL数据库,操作步骤如下:(演示将661版转为SQL2000版)
(一)
(1) 打开661版数据库的’资源管理器’,选择需要转化版本的实例’charge_sys’,
(2) 右击:任务—生成脚本
(3)
在脚本向导中勾选“编写整个数据库及所有数据库对象的脚本”单击下一步。
(4) 指定文件名。
(5) 做检查后,单击下一步。选择完成。
(二)
在SQL2000的查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库。
(三)
(1)在661版的"对象资源管理器",连接到实例’charge_sys’.
(2)右击:任务---导出数据
(3)导出向导中选择数据库’charge_sys’,单击下一步。
(4)目标中选择:SQL2000数据库
数据库选择:步骤2中新建的数据库
(6) 如图所示
(7) 选择“复制一个或多个表或视图的数据”
源表源视图中勾选全部。下一步
(8) 单击完成。
这样既可将高版本的数据库降成低版本,实现低版本的实例附加在高版本的库上,但是我不清楚仅在SQL2008中能否实现这种转化,可能我的理解不是很对,求大神指点。
方法三、
就是通过自己去设计、创建数据库,去琢磨主键、索引、权限、约束等怎么去编配,这样还是能锻炼我们使用数据库的能力的。这样就不会受到SQL SERVER版本问题的限制,灵活性强。但考虑到和别人共享数据库,前两种方法也得有所了解。而且,通过今天和师姐的交流,当年他们的师傅要求他们都是自己创建数据库的,这是最低的要求了。我想这个数据库看来我也得琢磨琢磨自己来了。
通过今天附加数据库,以及通过ODBC配置默认数据库实现“学生”、“机房”两个系统的切换,在附加数据库的知识上,有了新的认识。
更多关于数据库附加问题,参考马世超http://blog.csdn.net/mascf/article/details/38168029机房收费系统——附加数据库。