Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 11 - 更改和升级 » 8.0.0 版中的新功能 » 版本 8 中的行为更改

 

Adaptive Server Anywhere 的行为更改

下面是对该软件以前版本的行为更改。

有关最新的不建议使用和不受支持的功能的列表,请参见不再支持和不支持的功能

  • 数据库中的 Java 单独授与许可   其结果是,创建数据库时的缺省行为是排除对数据库中的 Java 的支持。

    在 UltraLite 参考数据库中,不再需要数据库中的 Java,因为 UltraLite 生成器已经被更改为使用外部 Java 虚拟机。

    有关详细信息,请参见SQL Anywhere 11 组件

  • 集合函数和外部引用   Adaptive Server Anywhere 版本 8 遵循新的 SQL/99 标准,明确了集合函数出现在子查询中时的用法。这些更改将影响为该软件的以前版本编写的语句的行为:以前正确的查询现在可能产生错误消息,结果集也可能发生变化。

    有关详细信息,请参见集合函数和外部引用

  • 用户提供的选择性估计   Adaptive Server Anywhere 允许您指定显式选择性估计,以指导选择访问计划。在软件选择的访问计划较差时,这些估算作为性能问题的变通解决方法十分有用。新的 user_estimates 连接选项将控制优化程序是使用还是忽略用户提供的选择性估计。

    如果您已经使用了这些估计作为性能问题的临时解决方案,则建议将 user_estimates 选项设置为 OFF,因为显式估计可能会变得不准确并可能会强制优化程序选择较差的计划。此版本包括了内部连接算法等查询处理增强,从而大大地提高了查询性能。

    有关用户提供的选择性估计的详细信息,请参见user_estimates 选项 [数据库]显式选择性估计

  • 行排序   对 8.0 版的查询处理的改进有一个副作用:行排序的确定性较低。当缺少 ORDER BY 子句时,Adaptive Server Anywhere 以最有效的顺序返回行。这意味着结果集的外观可能随您上一次访问行的时间和其它因素的不同而有所变化。确保以特定的顺序返回行的唯一方法是使用 ORDER BY。

    LIST 函数是受此更改影响特别大的函数之一。

  • 访问计划更改   Adaptive Server Anywhere 的这一版本选择的访问计划与该软件的先前版本相比使用索引的可能性较小。对表扫描效率的改进,以及在比较访问计划开销时使用的更具选择性的开销模型,使得对索引有用性的评估与该软件的先前版本相比更准确。

  • 游标更改   游标增强有一个副作用:该版本中的游标提供的行为与以前相比更接近于定义的标准。这可能会对某些游标产生游标敏感性变化,因为 Adaptive Server Anywhere 提供的行为可更好地符合 ODBC 和其它接口的期望。例如,嵌入式 SQL SCROLL 游标现在禁止预读,这样值更改就反映在游标中。

    这种更改可能影响只检查 SQL_SUCCESS 返回代码而不检查 SQL_SUCCESS_WITH_INFO 返回代码的现有应用程序。如果游标行为不同于所要求的行为,检查 SQL_SUCCESS_WITH_INFO 的应用程序将收到警告。警告是 SQLCODE=121, SQLSTATE 01S02。

    不敏感的游标是不可更新的。

    有关详细信息,请参见不敏感游标

  • 存储过程存储   现在,存储过程在写入时存储。Adaptive Server Anywhere 将创建一个过程的内部表示,用于进行分析。

  • 不支持在插入时打开游标   使用 INSERT 语句打开游标的功能已经被删除。使用 SELECT 语句打开可更新的游标以业界标准的方式提供了相同的功能。

  • 用户定义函数   现在会高速缓存用户定义的函数参数和返回值。如果一个函数在一个 SQL 语句内使用多次,那么高速缓存的参数值可能会导致使用高速缓存的结果,而不是再对该函数进行求值。在以前的版本中,用户定义的函数在每次需要它们时都重新进行求值。新行为提供了更好的性能和更一致的结果,但与该软件的以前版本相比,结果可能会有所更改。

  • NUMBER(*) 函数更改   限制了 NUMBER 函数的使用,以避免有问题的行为。NUMBER 函数通常的作用是在查询的选择列表中用来提供结果集的顺序行编号,而这种用法仍是允许的。

    与之前不同,NUMBER 函数现在可能返回负数,例如,如果您执行值为 -1 的绝对读取,然后通过游标向后移动。新行为对应于 ISO/ANSI 读取偏移。

    现在,在许多情况下(例如 WHERE 子句或 HAVING 子句)使用 NUMBER 函数都会出现错误。

    有关详细信息,请参见NUMBER 函数 [Miscellaneous]

  • 自定义归类更改   以前,归类实用程序中的 -d 选项接受三个参数;现在只接受两个参数。不再接受 cust-map-file 参数。

    此外,脚本文件 collsqmp.sqlcustmap.sql 不再存在,无法分别用于内置或自定义归类。

    对于新创建的数据库,SYSCOLLATIONMAPPINGS 表只包含一个具有归类映射的行。对于用 Adaptive Server Anywhere 的先前版本创建的数据库,此表对每个内置归类都包含一行。

  • 触发器名称更改   触发器名称不再必须在数据库中唯一。它们只需要在其应用的表内唯一。DROP TRIGGER 和 COMMENT ON TRIGGER 的语法也因此改变,这样,如果您也指定了表,则只能指定所有者。这意味着,只用所有者限定触发器的旧脚本现在将产生 [未找到表] 错误。

  • 示例数据库中的地址改变   Adaptive Server Anywhere 9.0 示例数据库中的地址也不同于以前的版本中的地址。

  • 内部 JDBC 驱动程序的 JAR 文件名改变   内部 JDBC 驱动程序类现在作为名为 ASAJRT(而不是 ASAJDBC)的 JAR 文件安装。

  • RESTORE DATABASE 语句权限   执行 RESTORE DATABASE 语句时不再需要与实用程序数据库进行连接。执行 RESTORE DATABASE 语句需要的权限由 -gu 命令行选项进行控制。

    有关详细信息,请参见RESTORE DATABASE 语句

  • 为 TDS 连接返回空的字符串时返回 NULL 字符串   tds_empty_string_is_null 选项控制服务器为 TDS 连接返回空字符串时返回包含一个空白字符的字符串还是返回一个 NULL 字符串。

    有关详细信息,请参见tds_empty_string_is_null 选项 [数据库]

  • COMMENT 语句改变   以前,COMMENT ON INDEX 的语法包含了一个可选的索引所有者名称。现在索引名称还可以包含所有者和表。而现在 COMMENT ON INDEX 的语法为

    COMMENT ON INDEX [ [ owner.]table.]index-name IS comment

    有关详细信息,请参见COMMENT 语句

  • 缺省情况下启用字符集转换   在 Adaptive Server Anywhere 的先前版本中,字符集转换功能在缺省情况下是关闭的,您必须指定 -ct 命令行选项来启用字符集转换。现在,字符集转换功能在缺省情况下是启用的,但可以使用 -ct- 命令行选项加以禁用。

    当服务器判断出连接的字符集与数据库的字符集不同时,服务器就会对该连接发送到服务器或从服务器发出的所有字符串应用字符集转换。

    当服务器判断出数据库和连接具有等同的字符集时,它就会对连接禁用字符集转换。

    在大多数情况下都应该启用字符集转换功能。当二进制数据被插入到数据库并作为字符数据读取或者执行相反操作时,可能会发生一个行为更改。在这种情况下,返回的数据可能不会与输入时完全相同,因为服务器只对字符数据应用字符集转换。为避免这一问题,应用程序不应该使用二进制类型发送或读取字符数据。

  • CONVERT、timestamp_format 和 date_format   在使用 timestamp_format 或 date_format 选项时,如果您以大小写混合形式(如 Mmm)指定一个字符符号,Adaptive Server Anywhere 将选择适合正在使用的语言的大小写。此外,现在 CONVERT 函数还将字符日期转换成适合正在使用语言的大小写。例如,在英语中正确的大小写是 May,而在法语中是 mai

    有关详细信息,请参见date_format 选项 [数据库]timestamp_format 选项 [兼容性]CONVERT 函数 [Data type conversion]

  • 更改为三值的布尔逻辑   两值布尔逻辑只适用于 expr = NULL 的情况,其中 expr 是指基列或基列上的一个表达式。否则,将应用三值逻辑。ansinull 选项现在只影响查询的 WHERE 子句中的这一特定情况。

  • Sybase Central 和 Interactive SQL 接受 COMMLINKS 连接参数   在 Adaptive Server Anywhere 的以前版本中,Sybase Central 和 Interactive SQL(dbisql 实用程序)忽略了 COMMLINKS 连接参数。Sybase Central 和 Interactive SQL 现在接受这一参数。

    由于这一更改,某些连接字符串的行为可能与在 Adaptive Server Anywhere 的先前版本中不同。具体来说,如果您不提供 COMMLINKS=tcpip,Interactive SQL 和 Sybase Central 将不会查找网络上的服务器。

    有关详细信息,请参见CommLinks 连接参数 [LINKS]

  • 客户端忽略 SQLLOCALE 环境变量   客户端可以使用 CharSet 连接参数指定在连接时使用的字符集。在 Adaptive Server Anywhere 的旧版本中,SQLLOCALE 环境变量的 CHARSET 参数用于在未提供 CharSet 连接参数的情况下更改客户端的缺省字符集。客户端现在忽略 SQLLOCALE 环境变量。

  • 不受支持的字符集导致连接失败   客户端可以使用 CharSet 连接参数指定在连接时使用的字符集。然而,如果服务器不支持请求的字符集,连接就会失败。当客户端请求 Adaptive Server Anywhere 旧版本不支持的字符集时,连接会成功,但会出现一个警告。如果客户端未指定字符集,而且客户端的本地字符集不受服务器支持,那么连接也会成功,但会出现一个字符集不受支持的警告。

    这种现象会在版本 8 的客户端连接到 6.x、7.x 和 8 版本数据库服务器时发生。

  • 更改了缺省数据包大小   客户/服务器通信的缺省数据包大小已从 1024 字节更改为 1460 字节。

    有关数据包大小的详细信息,请参见CommBufferSize 连接参数 [CBSIZE]-p 服务器选项

  • dbdsn 实用程序只管理 Adaptive Server Anywhere 数据源   用于管理 Adaptive Server Anywhere ODBC 数据源的 dbdsn 实用程序现在被显式限制为只管理 Adaptive Server Anywhere 数据源。

  • login_procedure 选项要求 DBA 权限   login_procedure 选项只能由具有 DBA 特权的用户进行设置。在 Adaptive Server Anywhere 的旧版本中,设置此选项是不需要 DBA 权限的。具有 DBA 权限的用户可以更改其他用户的此选项的设置,但没有 DBA 权限的用户无法更改他们自己的此选项设置。由于这种更改,DBA 可以确保当用户进行连接时,如有必要,将执行公用过程。

    有关详细信息,请参见login_procedure 选项 [数据库]

  • ESTIMATE_SOURCE 返回新值   ESTIMATE_SOURCE 函数返回比以前更详细的值。

    有关详细信息,请参见ESTIMATE_SOURCE 函数 [杂类]

不再支持和不支持的功能

此列表包括不再支持的和影响现有应用程序的功能。

  • 不支持 NetWare 4.10   仍支持 Novell NetWare 4.11 及更高版本。不支持 3.x 和 4.10 版。

  • 不支持 NetBios   不再支持 NetBios 端口。如果您使用 NetBios,则应切换到 TCP/IP 或 SPX。

  • 不支持 IPX   不再支持 IPX 端口。如果您使用 IPX,则应切换到 SPX 或 TCP/IP。

  • 不再支持的归类   不再支持以下归类。如下表所示,它们已经被其它归类所取代:

    不再支持

    取代归类

    437

    437LATIN1

    850

    850LATIN1

    852

    852LATIN2

    860

    860LATIN1

    863

    863LATIN1

    865

    865NOR

    SJIS

    932JPN

    SJIS2

    932JPN

    WIN_LATIN1

    1252LATIN1

    WIN_LATIN5

    1254TRK

    Internal

    850LATIN1

    437EBCDIC

  • 不再支持 -e 选项   不再支持用于对客户端/服务器通信进行加密的 -e 命令行选项及数据源实用程序中的 -e 选项。-ec 选项取代了它们。在服务器上,-ec simple 与 Adaptive Server Anywhere 先前版本中的 -e 使用相同的加密算法。

  • 不建议使用 None 参数   不再支持 isql_plan 选项的 None 参数。现在,查询优化计划出现在 [结果] 窗格中的 [计划] 选项卡上。单击 [计划] 选项卡时,总是出现一个计划。以前,计划出现在 [消息] 窗格中。

  • 不再支持 WITH HASH SIZE n 子句   不再支持 WITH HASH SIZE 子句。

  • 不建议使用 max_work_table_hash_size 选项   不再支持 max_work_table_hash_size 选项。

  • 不建议使用 max_hash_size 选项   不再支持 max_hash_size 选项。

  • 不再支持 SATMP 环境变量   不再支持 UNIX 版本的 Adaptive Server Anywhere 用来指示临时文件所在目录的 SATMP 环境变量。在 UNIX 上,ASTMP 环境变量可用于指示保存临时文件的位置。

    有关详细信息,请参见SATMP 环境变量

  • 删除了 dbtran -id 选项   此软件中没有提供 dbtran 实用程序中的 -id 命令行选项。