



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL2005了默认的兼容级别变成90了,很多老的代码可能会报错了,当然也可以从企业管理器中降低默认级别来解决,以下转来一个对比表兼容级别设置为 80 或更低 兼容级别设置为 90 影响的可能性 对于 FROM 子句中的锁提示,WITH 关键字始终是可选的。 但在一些例外情况中,仅当用 WITH 关键字指定表提示时,FROM 子句中才支持这些提示。有关详细信息,请参阅 FROM (Transact-SQL)。 高支持在警告消息中使用外部联接运算符 *= 和 =*。不支持使用这两个运算符;应使用 OUTER JOIN 关键字。高在将 ORDER BY 列表中的列引用绑定到在 SELECT 列表中定义的列时,将忽略列的多义性,有时还会忽略列前缀。这可以导致以意外顺序返回结果集。 例如,可以接受具有一个两部分列 (.) 的 ORDER BY 子句,而且该列被用作对 SELECT 列表中的列的引用,但忽略表别名。请考虑以下查询:SELECT c1 = -c1 FROM t_table AS x ORDER BY x.c1执行时,将忽略 ORDER BY 中的列前缀。对指定的源列 (x.c1) 不进行预期的排序操作,而是对在查询中定义的派生 c1 列进行此操作。此查询的执行计划将显示:首先计算派生列的值,然后对计算得到的值进行排序。如果存在列的多义性,则将引发错误。在绑定到 SELECT 列表中所定义的列时,不忽略在 ORDER BY 中指定的列前缀(如果有)。请考虑以下查询:SELECT c1 = -c1 FROM t_table AS x ORDER BY x.c1执行时,不忽略 ORDER BY 子句中的列前缀。在指定的源列(x.c1) 上按预期发生排序操作。此查询的执行计划将显示排序运算符对从 t_table 返回的行排序,然后再对在 SELECT 列表中定义的派生列 c1 的值排序。 中在 INSERT SELECT 中,如果 UNION 属于不同的数据类型,则每个 UNION 分支都直接转换为 INSERT 目标列的类型。即使本身所使用的联合可能会因不兼容的类型转换而失败,INSERT SELECT 也会使 UNION 成功执行,因为 UNION 的结果类型的分支从不进行转换。在 SQL Server 2005 中,UNION 的结果类型独立于 INSERT SELECT 而派生。UNION 的每一分支都转换为 UNION 的结果类型,然后转换为 INSERT 的目标列类型。如果 UNION 中有不兼容类型,则第一个转换可能会导致错误。若要以兼容级别 90 运行,则必须修复在 INSERT SELECT 中使用的所有不兼容类型的联合。中 当视图或被引用视图使用 TOP 子句时,指定了 WITH CHECK OPTION 子句的视图中无法正确支持通过视图进行插入和更新操作。当视图或被引用视图使用 TOP 子句时,使用 WITH CHECK OPTION 的视图中不支持通过视图进行插入和更新操作。中可变长度列和固定长度列的 UNION 将生成一个固定长度列。可变长度列和固定长度列的 UNION 将生成一个可变长度列。中允许在触发器中使用 SET XACT_ABORT OFF。不允许在触发器中使用 SET XACT_ABORT OFF。中允许在视图中使用(并忽略)FOR BROWSE 子句。 不允许在视图中使用 FOR BROWSE 子句。 中ANSI_WARNINGS 不控制域错误。如果 ANSI_WARNINGS 设置为 OFF 并且 ARITHABORT 没有更改,则遵守 ARITHABORT 设置。 域错误由 ANSI_WARNINGS 控制,并且是严重级别为 16 的错误。如果 ANSI_WARNINGS 或 ARITHABORT 为 ON,则将引发错误,而不是返回 NULL 值。此更改可能会破坏依赖于设置为 OFF 的 ARITHABORT 的用户脚本。中如果对远程数据源(OpenRowset 或 OpenQuery)所执行的直接传递查询生成名称重复的列,则除非在该查询中显式命名了这些列,否则将忽略重复的列名。 如果对远程数据源(OpenRowset 或 OpenQuery)所执行的直接传递查询生成列名重复的列,将引发错误。 低大小大于 8000 的字符串常量和 varbinary 常量被视为 text、ntext 或 image。 大小大于 8000 的字符串常量和 varbinary 常量被视为 varchar(max) 类型(或分别被视为 nvarchar(max) 和 varbinary(max))。如果 SELECT 列表包含此类表达式,则这样可以更改使用 SELECT INTO 创建的表的数据类型。低通过将类型层次结构中优先级较低的比较数转换为优先级较高的类型,从而在各数值类型(smallint、tinyint、int、bigint、numeric、decimal、smallmoney、money)之间进行比较。 数值类型值不经转换便进行比较。这有助于提高性能。但这可能会导致行为发生某些更改,尤其是在转换导致溢出异常的情况下。 低使用字符串参数的内置元数据函数在其输入长度大于 4000 个字符的情况下,将截断该输入。 如果截断导致丢失非空格字符,则内置元数据函数会引发错误。低未加引号的标识符中被禁用的字符集保持不变。Transact-SQL 分析器支持 Unicode 3.2 标准,该标准更改了目前禁止在未分隔标识符中使用的一些国际字符的字符分类。低在出现浮点域错误(即 log() 函数的参数为负)时,SET ANSI_WARNINGS ON 不覆盖 SET ARITHABORT OFF 的设置。如果 ANSI_WARNINGS 为 ON 但 ARITHABORT 为 OFF,则浮点域错误不会导致查询终止。SET ANSI_WARNINGS ON 完全覆盖 ARITHABORT OFF 设置。在这种情况下,浮点域错误将导致查询终止。低允许在 ORDER BY 子句中使用(并忽略)非整数常量。不允许在 ORDER BY 子句使用非整数常量。低允许使用空的 SET 语句(未指定 SET 选项)。 不允许使用空的 SET 子句。低没有为派生表所生成的列正确派生 IDENTITY 属性。 为派生表所生成的列正确派生了 IDENTITY 属性。低对浮点数据类型执行运算的算术运算符的为空性属性始终可为空。在输入不可为空并且 ANSI_WARNINGS 为 ON 的情况下,对浮点数据类型执行运算的算术运算符的为空性属性将更改为不可为空值。低在使用 UNION 组合的 INSERT .SELECT 语句中,由各个结果集生成的类型都将转换为目标结果类型。在使用 UNION 组合的 INSERT .SELECT 语句中,确定各分支的主要类型,并在将结果转换为目标表类型之前将其转换为该类型。低在 SELECT .FOR XML 语句中,始终实体化 hex(27)( 字符)和 hex(22)( 字符),即使在不需要的情况下也是如此。FOR XML 只在需要时才实体化 hex(27) 和 hex(22)。在下列情况下不实体化这些字符: 在属性内容中,如果属性值以 分隔,则不实体化 hex(27)( 字符);如果属性值以 分隔,则不实体化 hex(22)( 字符)。 在元素内容中,从不实体化 hex(27) 和 hex(22)。 低在 FOR XML 中,时间戳值映射为整数。 在 FOR XML 中,时间戳值映射为二进制值。 有关详细信息,请参阅 timestamp 数据类型的 FOR XML 支持。 如果使用 timestamp 列,则为高;否则为低在 FOR XML 和 OPENXML 中,名称中大范围 Unicode 字符(3 个字节)使用 8 位表示。 例如,FOR XML 用 8 位表示 Unicode 码位 U+10000 的方式如下: 在 FOR XML 和 OPENXML 中,名称中大范围 Unicode 字符(3 个字节)使用 6 位表示。 例如,FOR XML 用 6 位表示 Unicode 码位 U+10000 的方式如下: 低在 FOR XML 中,使用 AUTO 模式的派生表映射被视为是透明的。例如:复制代码USE AdventureWorks CREATE TABLE Test(id int); INSERT INTO Test VALUES(1); INSERT INTO Test VALUES(2); SELECT * FROM (SELECT a.id AS a, b.id AS b FROM Test a JOIN Test b ON a.id=b.id) Test FOR XML AUTO;如果 AdventureWorks 的兼容级别设置为 80,则以上示例将生成: 在 FOR XML 中,使用 AUTO 模式的派生表映射被视为是不透明的。如果 AdventureWorks 的兼容级别设置为 90,则以上示例将生成: 有关更改为 AUTO 模式的详细信息,请参阅 AUTO 模式的增强功能。 如果对视图应用 FOR XML AUTO 模式,则为高;否则为低仅在日语和朝鲜语中,字符串到 money 的转换才支持使用反斜杠字符 () 作为货币符号。在所有语言中,所有字符串到 money 的转换中都接受反斜杠字符 ()。当 用作货币符号时,ISNUMERIC 将返回 True。 对于 SQL Server 2005 之前的 SQL Server 版本上的数据库,这一新行为会拆分依赖于包含 的 ISNUMERIC 返回值并且所使用的语言既不是日语也不是朝鲜语的索引和计算列。低即使操作数不可为空并且 ANSI_WARNINGS 或 ARITHABORT 设置为 ON,算术运算符的结果也始终可为空。在 ANSI_WARNINGS 或 ARITHABORT 设置为 ON 时,如果两个操作数都不可为空,则浮点算术运算符的结果也不可为空值。在以下情况中,这种为空性的更改可能导致错误:使用 bcp 从包含计算列(该计算列使用浮点算术运算符)的 SQL Server 2000 表中大容量导出二进制格式的数据,然后使用 bcp 或 BULK INSERT 将这些数据大容量导入包含同一定义的 SQL Server 2005 表。注意: 当两个选项均为 OFF 时,数据库引擎 将把结果标记为可为空。这与 SQL Server 2000 中相同。 低对于以 nvarchar 作为参数的内置函数,如果所提供的值为 varchar,则该值将转换为 nvarchar(4000)。在 SQL Server 2000 中,如果传递较大值,则该值将自行截断。 对于以 nvarchar 作为参数的内置函数,即使所提供的值为 varchar,该值仍将转换为 nvarchar(4000)。但如果传递较大值,SQL Server 2005 将生成错误。若要以兼容级别 90 运行,必须修复依赖于截断行为的所有自定义代码。低固定长度(char、binary 或 nchar)字符串与可变长度(varchar、varbinary、nvarchar)字符串的联合返回固定长度的结果。可变大小字符串和固定大小字符串的联合返回可变大小字符串。若要以兼容级别 90 运行,那么对于任何地方(索引、查询和计算列),只要它依赖与将可变大小类型和固定大小类型求并集得到的类型,就必须修复。低包含字符 0xFFFF 的对象名是有效标识符。包含字符 0xFFFF 的对象名是无效标识符,不能访问。若要以兼容级别 90 运行,必须重命名包含此字符的对象。低在 SELECT ISNUMERIC() 中, 内嵌入的逗号非常重要。例如,以下 SELECT ISNUMERIC(121212,12) 查询返回 0。这指示字符串
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陶瓷彩绘工中秋节后复工安全考核试卷含答案
- 高压旋喷桩施工合同6(3篇)
- 用电检查员中秋节后复工安全考核试卷含答案
- 药膳制作师国庆节后复工安全考核试卷含答案
- 三聚氰胺装置操作工中秋节后复工安全考核试卷含答案
- 数据标注员中秋节后复工安全考核试卷含答案
- 自行车与电动自行车维修工中秋节后复工安全考核试卷含答案
- 二年级下学期班主任工作改进计划
- 甲烷合成气净化工中秋节后复工安全考核试卷含答案
- 医患关系观察笔记
- 教师节主题班会课件PPT
- 汉字课第一课(汉语国际教育)课件
- 安徽省物业管理行业专题调研分析报告
- 2023国家电网作业安全风险管控典型生产作业风险定级库
- 英语外研八年级上册群文阅读课PPT 韩茜
- 食品安全与日常饮食知到章节答案智慧树2023年中国农业大学
- IE七大手法培训教材人机作业图
- GB/T 9766.3-2016轮胎气门嘴试验方法第3部分:卡扣式气门嘴试验方法
- GB/T 22751-2008台球桌
- 媒介经营与管理(课程)课件
- 《智慧养老》方案ppt
评论
0/150
提交评论