SQL2000 升级版本到2008,将兼容级别设置为80。是否既能使用2k版本的特性。又能使用2008版本的新特性。

megnet 2014-06-06 10:56:47
老数据库是 SQL2000版本,打算升级到sql2008 R2 64位版本。 能升级成功。但是原来老数据库中有不少 *= 之类的语句。新的2008数据库不支持。
所以用 DATABASE database_name SET COMPATIBILITY_LEVEL =80 设置了兼容级别。
设置完成后, 测试了一下,发现也能使用 CTE merge 等新特性语句。

问题: 既然如此兼容的好。能否一直这样使用下去,既一直将COMPATIBILITY_LEVEL 设置成80 ,同时拥有2000版本和 2008版本的功能。
个人感觉这样是有问题的。但是不知道具体。有知道的朋友请给说下。谢谢了。
...全文
350 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-06-06
  • 打赏
  • 举报
回复
我能想到的: 1、多年之后可能又要升到2012、2014甚至2016,从2012开始不支持80,也就是说你要先升到05或者08才能升级到2012,麻烦,并且不是单纯改一下兼容级别的数值就有用的。 2、08的新特性很多用不上,你测的CTE/MEGER能用(其实我觉得应该还是不可用的,),但是不保证所有新功能都能用的上或者所有旧功能都能兼容,有一天报错的话就惨了。
megnet 2014-06-06
  • 打赏
  • 举报
回复
我的问题是: 长期将COMPATIBILITY_LEVEL 设置成80 使用。有何不利因素。
發糞塗牆 2014-06-06
  • 打赏
  • 举报
回复
兼容级别主要影响一些写法和数据库特性,比如*=和left join这些,你可以试一下在2008中直接创建一个库,然后用*=,会报错的: Msg 4147, Level 15, State 1, Line 3 The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.
megnet 2014-06-06
  • 打赏
  • 举报
回复
谢谢二位版主。我知是改掉最好。但是涉及面比较广,不只是在sql数据库中,查询语句分布在各个C/S系统的客户端程序中。有些程序其实对应的7.0 开发的。所以打算上新版数据库后,再逐步修改各个客户端程序。这样的话,数据库兼容性配置就要使用相当的一段时间。 另外我查了帮助如下 通过将兼容级别用作临时性的迁移辅助工具,可解决相关兼容级别设置控制的行为之间存在的版本差异问题。如果现有 SQL Server 应用程序受到 SQL Server 2008 中行为差异的影响,请对该应用程序进行转换,使之能正常运行。 这段话的意思是 兼容级别也只是临时性的。临时性是个什么概念,若长期使用兼容后又哪些不利因素呢。帮助中也没有说。
發糞塗牆 2014-06-06
  • 打赏
  • 举报
回复
*=这些就算在2000,也建议改掉。
--小F-- 2014-06-06
  • 打赏
  • 举报
回复
这样还是不好 还是建议直接修改语句 现在SQL SERVER都到了2014 你不修改的话 后面的工作将更加麻烦。
Q315054403 2014-06-06
  • 打赏
  • 举报
回复
既然是遗留的旧系统,且有新版本不支持的*=,没特别原因,建议不用升级,而且升级也只能升级到2008 再之后的就不支持兼容级别80了 这叫老情况,老办法 新系统,新版本
以学习为目的 2014-06-06
  • 打赏
  • 举报
回复
SQL2000数据库的升级是个麻烦的事情,涉及后台程序、前台的语句语法等等问题,包括相关的接口程序等等。实在是一个麻烦的事情。我手里也有一个2000的数据库考虑升级,目前因为一直是业务比较频繁所以没有开始大动。 我觉得2000升级到2008,然后单纯的修改数据库兼容级别是不能够解决实际问题的,包括你业务相关的程序,相关接口程序,组件,数据库链接方式,语句写法。未来的数据库再升级,都将遇到很多麻烦。你测试的 CTE merge 等新特性语句只是在升级后的2008中执行,并没有在实际业务中测试。所以你的业务肯定会出问题的

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧