欢迎来到天天文库
浏览记录
ID:12589642
大小:27.17 KB
页数:5页
时间:2018-07-17
《sqlserver兼容性80与90的区别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQL2005了默认的兼容级别变成90了,很多老的代码可能会报错了,当然也可以从企业管理器中降低默认级别来解决,以下转来一个对比表兼容级别设置为80或更低兼容级别设置为90影响的可能性对于FROM子句中的锁提示,WITH关键字始终是可选的。但在一些例外情况中,仅当用WITH关键字指定表提示时,FROM子句中才支持这些提示。有关详细信息,请参阅FROM(Transact-SQL)。高支持在警告消息中使用外部联接运算符*=和=*。不支持使用这两个运算符;应使用OUTERJOIN关键字。高在将ORDE
2、RBY列表中的列引用绑定到在SELECT列表中定义的列时,将忽略列的多义性,有时还会忽略列前缀。这可以导致以意外顺序返回结果集。例如,可以接受具有一个两部分列(.)的ORDERBY子句,而且该列被用作对SELECT列表中的列的引用,但忽略表别名。请考虑以下查询:SELECTc1=-c1FROMt_tableASxORDERBYx.c1执行时,将忽略ORDERBY中的列前缀。对指定的源列(x.c1)不进行预期的排序操作,而是对在查询中定义的派生c1列进行此
3、操作。此查询的执行计划将显示:首先计算派生列的值,然后对计算得到的值进行排序。如果存在列的多义性,则将引发错误。在绑定到SELECT列表中所定义的列时,不忽略在ORDERBY中指定的列前缀(如果有)。请考虑以下查询:SELECTc1=-c1FROMt_tableASxORDERBYx.c1执行时,不忽略ORDERBY子句中的列前缀。在指定的源列(x.c1)上按预期发生排序操作。此查询的执行计划将显示排序运算符对从t_table返回的行排序,然后再对在SELECT列表中定义的派生列c1的值排序。中
4、在INSERTSELECT中,如果UNION属于不同的数据类型,则每个UNION分支都直接转换为INSERT目标列的类型。即使本身所使用的联合可能会因不兼容的类型转换而失败,INSERTSELECT也会使UNION成功执行,因为UNION的结果类型的分支从不进行转换。在SQLServer2005中,UNION的结果类型独立于INSERTSELECT而派生。UNION的每一分支都转换为UNION的结果类型,然后转换为INSERT的目标列类型。如果UNION中有不兼容类型,则第一个转换可能会导致错误
5、。若要以兼容级别90运行,则必须修复在INSERTSELECT中使用的所有不兼容类型的联合。中当视图或被引用视图使用TOP子句时,指定了WITHCHECKOPTION子句的视图中无法正确支持通过视图进行插入和更新操作。当视图或被引用视图使用TOP子句时,使用WITHCHECKOPTION的视图中不支持通过视图进行插入和更新操作。中可变长度列和固定长度列的UNION将生成一个固定长度列。可变长度列和固定长度列的UNION将生成一个可变长度列。中允许在触发器中使用SETXACT_ABORTOFF。不
6、允许在触发器中使用SETXACT_ABORTOFF。中允许在视图中使用(并忽略)FORBROWSE子句。不允许在视图中使用FORBROWSE子句。中ANSI_WARNINGS不控制域错误。如果域错误由ANSI_WARNINGS中ANSI_WARNINGS设置为OFF并且ARITHABORT没有更改,则遵守ARITHABORT设置。控制,并且是严重级别为16的错误。如果ANSI_WARNINGS或ARITHABORT为ON,则将引发错误,而不是返回NULL值。此更改可能会破坏依赖于设置为OFF的A
7、RITHABORT的用户脚本。如果对远程数据源(OpenRowset或OpenQuery)所执行的直接传递查询生成名称重复的列,则除非在该查询中显式命名了这些列,否则将忽略重复的列名。如果对远程数据源(OpenRowset或OpenQuery)所执行的直接传递查询生成列名重复的列,将引发错误。低大小大于8000的字符串常量和varbinary常量被视为text、ntext或image。大小大于8000的字符串常量和varbinary常量被视为varchar(max)类型(或分别被视为nvarch
8、ar(max)和varbinary(max))。如果SELECT列表包含此类表达式,则这样可以更改使用SELECT…INTO创建的表的数据类型。低通过将类型层次结构中优先级较低的比较数转换为优先级较高的类型,从而在各数值类型(smallint、tinyint、int、bigint、numeric、decimal、smallmoney、money)之间进行比较。数值类型值不经转换便进行比较。这有助于提高性能。但这可能会导致行为发生某些更改,尤其是在转换导致溢出异常的情况下。低使用字符串参数的内置元
此文档下载收益归作者所有