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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 16 - 更改和升级 » 11.0.0 版中的新功能 » SQL Anywhere

 

SQL Anywhere 行为更改

以下列出了 11.0.0 版中引入的对 SQL Anywhere 的行为更改(根据类别分组)。

  • 对分类目录进行的更改   在下表中包含了 11.0.0 版对目录的更改。

    您必须升级数据库才能获得这些更改。请参见SQL Anywhere 服务器升级

    表名称和/或视图名称 对更改的说明
    ISYSTAB/SYSTAB
    • 添加了一个新列 dbspace_id,作为对于当前 file_id 列的最后替换。

    • 不建议使用 file_id 列。请改用 dbspace_id。对于全局临时表,SYSTAB.file_id 现在指向临时 dbspace 而不是 系统 dbspace。

    • 已添加了新列 last_modified_tsn,用于为修改该表的事务存储序列号。

    ISYSIDX/SYSIDX
    • 添加了一个新列 dbspace_id,作为对于当前 file_id 列的最后替换。

    • 不建议使用 file_id 列。请改用 dbspace_id。

    ISYSFILE 不建议使用此系统表。现在,可在(新)ISYSDBSPACE 系统表中找到除 lob_map 外的所有列。现在,可在(新)ISYSDBFILE 系统表中找到 lob_map 列。
    ISYSDBFILE/SYSDBFILE 用于保存有关 dbspace 信息的新表。
    ISYSDBSPACE/SYSDBSPACE 用于保存有关 dbspace 信息的新表。
    SYSDBSPACEPERM/ISYSDBSPACEPERM 用于保存 dbspace 权限的新表。
    ISYSOBJECT/SYSOBJECT 已将 file_id 列重命名为 dbspace_id。此外,在 object_type 列中可以包含两个新值:17(文本配置)和 18 (Dbspace)。
    SYSINDEXES 在 indextype 字段中,现在将外键和主键索引分别标识为 [主键] 和 [外键],以便与其它索引相区别。
    ISYSCAPABILITYNAME 此表不再存在于目录中。相应的 SYSCAPABILITYNAME 系统视图仍然可用,但通过使用服务器属性生成该视图。
    ISYSEVENTTYPE 此表不再存在于目录中。相应的 SYSEVENTTYPE 系统视图仍然可用,但通过使用服务器属性生成该视图。
    ISYSVIEW 名为 mv_last_refreshed_tsn 的一个新列,用于为刷新实例化视图的事务存储序列号。
    ISYSLOGINMAP/SYSLOGINMAP 用于保存有关登录策略信息的新表。
    ISYSLOGINPOLICY/SYSLOGINPOLICY 用于保存有关登录策略信息的新表。
    ISYSLOGINPOLICYOPTION/SYSLOGINPOLICYOPTION 用于保存有关登录策略信息的新表。
    ISYSTEXTCONFIG/SYSTEXTCONFIG 用于保存有关文本配置对象信息的新表。
    ISYSTEXTIDX/SYSTEXTIDX 用于保存有关文本索引信息的新表。
    ISYSTEXTIDXTAB/SYSTEXTIDXTAB 用于保存有关文本索引信息的新表。

  • 对 PHP 函数名的更改   已经重命名所有 PHP 函数,其前缀改为 sasql_ 而不是 sqlanywhere_。调用函数时,仍然允许在名称中存在 sqlanywhere_ 前缀,但不建议使用。您应该更改应用程序以使用新前缀。

  • INSERT...ON EXISTING UPDATE 语句现在触发触发器   以前,执行 INSERT...ON EXISTING UPDATE 语句时,如已更新数据,则不触发触发器。现在,数据库服务器会为更新触发语句级后触发器。

  • REFRESH MATERIALIZED VIEW 语句   不再能为刷新将 STATEMENT SNAPSHOT 和 READONLY STATEMENT SNAPSHOT 指定为隔离级别,因为这些选项的效果与为隔离级别指定 SNAPSHOT 的效果相同。请参见REFRESH MATERIALIZED VIEW 语句

  • REORGANIZE TABLE 语句   现在,试图在同一个表上同时执行多个 REORGANIZE TABLE 语句会导致错误。

  • sa_validate 系统过程   sa_validate 的 check_type、快速参数和校验和参数现已过时;指定这些参数不再产生效果。现在,缺省情况下执行校验和校验。此外,如果调用 sa_validate 系统过程时未指定任何参数,数据库服务器除了校验所有表、实例化视图和索引外,还会校验数据库本身,其中包括校验和。请参见sa_validate 系统过程

  • -gss 服务器选项   现在,在 Windows XP 及其更高版本上支持 -gss 服务器选项。在以前的发行版本中,在 Windows 操作系统上不支持此选项。请参见-gss 数据库服务器选项

  • 不再支持 -gx 服务器选项   此发行版本中已经删除了对 -gx 服务器选项的支持。启动 SQL Anywhere 数据库服务器时指定 -gx 选项会导致错误。

  • LazyClose 连接参数的缺省设置现在为 AUTO   在之前的版本中,在应用程序关闭游标时,除非 LazyClose 连接参数设置为 NO,必需往返经过数据库服务器。现在,缺省情况下,可以为许多游标对游标关闭请求进行排队,这样就消除了往返,从而改进了性能。LazyClose 连接参数现在接受三个值:YES、NO 和 AUTO(缺省值)。在以前的发行版本中,YES 为缺省设置。请参见LazyClose (LCLOSE) 连接参数

  • 嵌入式 SQL 导入库的更改   不再包括 Watcom 和 Borland 版本的 DBLIB 导入库。这些导入库分别是 dblibtw.libdblibtb.lib。提供了一个重要的定义文件(%SQLANY11%\SDK\Lib\Def\dblib.def 文件)来替换这些导入库。

  • 数据库工具导入库的更改   不再包括 Watcom 和 Borland 版本的数据库工具导入库。这些导入库分别是 dbtlstw.libdbtlstb.lib。提供了一个重要的定义文件 (%SQLANY11%\SDK\Lib\Def\dbtool.def) 来替换这些导入库。

  • 未接收到任何行时定义的 DBLIB 指示符行为   如果在读取或执行操作中,未从数据库服务器接收到任何行(由于出错或者到达结果集的末尾),则指示符值现在不会更改。请参见指示符变量

  • ODBC SQLGetConnectAttr   现在,通过 ODBC 的 SQLGetConnectAttr 调用来获取 SQL_ATTR_CONNECTION_DEAD 属性,如果连接已经删除,即使从连接删除时起未向服务器发出任何请求,也可以获得值 SQL_CD_TRUE。确定删除的连接是否是在未向服务器发出请求的情况下完成的,并且可在几秒钟内检测到删除的连接。有多个原因可删除连接,例如空闲超时。

    在以前的版本中,如果连接断开或者连接删除后如果 ODBC 驱动程序向服务器发出请求(例如,通过调用 SQLExecDirect),则 SQL_ATTR_CONNECTION_DEAD 仅获得值 SQL_CD_TRUE。

  • 不能创建也不能启动名为 utility_db 的数据库   现在,为 SQL Anywhere 服务器实用程序数据库保留名称 utility_db。如果试图创建一个名为 utility_db.db 的新数据库或者试图启动一个具有该名称的现有数据库,将会返回错误。如果现有数据库的名称为 utility_db,可以使用不同的名称来启动该数据库。请参见实用程序数据库

  • 计算列依赖性   以前,为使更新或插入操作能够无错进行,应用程序可以使用触发器向声明为 NOT NULL 的列指派非 NULL 值。这会影响到那些依赖于该列的计算列,因为会导致某个计算值不能反映所需的计算。现在,如果试图在计算列所依赖的 NOT NULL 列设置一个 NULL 值,结果会失败并返回错误消息,并且不会触发任何触发器。请参见插入和更新计算列

  • 包含句点的 dbspace 名称会生成错误   在以前的版本中,如果某个 dbspace 名称包含一个句点并且未加上引号,则服务器会以静默方式忽略该 dbspace 名称中位于句点前面的部分。现在,数据库服务器会为此类名称生成一个错误。

  • SQL Anywhere Web 服务器不再支持 SSL 版本 2.0   使用 SQL Anywhere Web 服务器时,仅支持 SSL 版本 3.0 和 TLS 版本 1.0 连接。不支持 SSL 版本 2.0 连接。

  • CREATE SERVICE 选项 DATATYPE 缺省值已更改   已将 DATATYPE 子句的缺省值从 OFF 更改为 ON。如果需要原来的行为,则必须在 CREATE SERVICE 定义中显式地包含 DATATYPE OFF。请参见CREATE SERVICE 语句 [SOAP Web 服务]

  • 校验和行为更改   对于使用版本 11 创建的数据库或者升级到版本 11 的数据库,数据库服务器会自动为在如网络驱动器或可移动驱动器的介质上运行的数据库启用校验和。只要数据库驻留在此类设备上,校验和就保持启用状态。请参见使用校验和检测损坏

  • HTTP 连接不会导致数据库自动停止   在以前的版本中,如果将某个数据库配置为自动停止,当某个 HTTP 连接断开并且在该数据库上不存在其它连接时,数据库会停止。现在,仅在最后一个命令序列或 TDS 连接断开连接时,数据库才会自动停止。

    如果与数据库的唯一连接是 HTTP 连接而且该数据库配置为自动停止,则当该 HTTP 连接断开时,数据库不会自动停止。同样,如果配置为自动停止的数据库具有 HTTP 连接和命令序列或 TDS 连接,则当最后一个命令序列或 TDS 连接断开时,该数据库就会停止,并且所有 HTTP 连接都将断开。请参见-ga 数据库服务器选项AutoStop (ASTOP) 连接参数

  • 数据库镜像行为更改   在以前的版本中,如果在 -xp 选项中为主服务器或镜像服务器指定的连接参数无效,则数据库服务器会反复尝试连接,但是该连接决不会成功。在本发行版本中,如果在 -xp 选项中指定的连接参数无效,并且在服务器上运行多个数据库,则镜像的数据库启动失败并且不尝试重新连接。如果镜像数据库是在数据库服务器上运行的唯一数据库,则数据库服务器不会启动。

  • 实例化视图的缺省刷新行为   以前,实例化视图的缺省刷新行为采用 WITH EXCLUSIVE MODE。现在,缺省刷新行为取决于是否将实例化视图定义为 IMMEDIATE REFRESH,以及是否为数据库启用快照隔离级别。请参见REFRESH MATERIALIZED VIEW 语句

  • post_login_procedure 数据库选项行为更改   现在,post_login_procedure 数据库选项的缺省设置为 sa_post_login_procedure 系统过程。请参见post_login_procedure 选项

  • non_keywords 数据库选项   在以前的版本中,除了指定各个关键字之外,您还可以通过在关键字列表中使用下列特殊值来关闭特定发行版本后的所有关键字:
    keywords_4_0_d, keywords_4_0_c, keywords_4_0_b, keywords_4_0_a, keywords_4_0,
     keywords_5_0_01, keywords_5_0

    不再支持这些特殊值。但仍然可以关闭各个关键字。请参见non_keywords 选项

  • cooperative_commit_timeout 数据库选项   现在,将忽略此选项设置,因为将自动调整提交行为。

  • cooperative_commits 数据库选项   现在,将忽略此选项设置,因为将自动调整提交行为。

  • 与远程数据访问相关的 quoted_identifier 数据库选项设置   现在,当使用远程数据访问时,quoted_identifier 选项的本地设置控制是否对 Adaptive Server Enterprise 和 Microsoft SQL Server 使用加引号的标识符。例如,如果在本地将 quoted_identifier 选项设置为 [Off],则会为 Adaptive Server Enterprise 关闭标识符加引号。请参见:

  • 对于 precision 和 scale 数据库选项范围的更改   在以前的发行版本中,可以为各位用户设置 precision 和 scale 数据库选项或者指定该设置具有临时范围。但是,这些设置会影响到数据库的可恢复性。如果在执行创建或变更表和域的 DDL 语句时,临时设置或用户级设置与相应的 PUBLIC 设置不同,则可能会在重建数据库时遇到问题。以下行为现在应用于 precision 和 scale 数据库选项:

    数据库服务器版本 版本 10 或更早版本的数据库 版本 11 的数据库 升级到版本 11 的数据库 卸载版本 10 或更早版本的数据库
    11

    允许 PUBLIC 设置

    允许用户设置

    允许临时设置

    允许 PUBLIC 设置

    允许用户设置

    允许临时设置

    允许 PUBLIC 设置

    允许用户设置

    允许临时设置

    卸载 PUBLIC 设置

    卸载时放弃用户设置

    版本 10 或更早版本

    允许 PUBLIC 设置

    允许用户设置

    允许临时设置

    不适用 不适用

    卸载 PUBLIC 设置

    卸载用户设置

    版本 10 和更早版本的数据库服务器仍然允许临时设置 scale 和 precision 选项,也允许为各位用户进行此类设置。

    小心

    建议对于 precision 和 scale 数据库选项不要依赖用户级或临时设置,因为会在重建数据库期间遇到潜在问题,而且可能会发生不可预知的数据库服务器行为。

    请参见:

  • OPTION 子句行为更改   现在,如果指定一个 INSERT、UPDATE、DELETE、SELECT、UNION、EXCEPT 和 INTERSECT 语句中的 OPTION 子句不支持的数据库选项,该子句会返回错误。请参见:

  • 只读数据库的回退日志行为更改   在以前的发行版本中,不将针对涉及事务性临时对象的只读数据库的操作视为事务性的:不为它们保留回退日志信息。在本发行版本中,在只读数据库中的事务性临时对象具有完全的事务性语义。它们会被提交、回退以及回退到保存点。

  • 支持 Itanium 64 位的平台更改   在以前的版本中,该软件有面向基于 Itanium II 芯片的 Windows Server 2003 的完整 64 位版本,还有面向 64 位 Linux 和 HP-UX 操作系统的部署发行版本。

    在本发行版本中,仅有面向 64 位 HP-UX 的部署发行版本。

  • 卸载实用程序 (dbunload) 行为更改   在以前的发行版本中,必须使用 -an 或 -ar 选项指定 dbunload -ea、-ek 和 -ep 选项,以便控制新数据库的加密。现在,如果卸载数据库或者数据库的任何一部分并且不再进行重装,则 -ea、-ek 和 -ep 选项会控制所创建的表数据文件的加密。使用这些文件从 Interactive SQL 重装数据库时,必须将加密密钥指定为 READ 语句的参数。请参见卸载实用程序 (dbunload)

    还有,在以前的发行版本中,dbunload 用于抽取数据库的版本不必与运行数据库的数据库服务器的版本相同。现在,在将 dbunload 用于版本 10.0.0 或更高版本的数据库时,所使用的 dbunload 的版本必须与用于访问数据库的数据库服务器的版本相匹配。如果将较旧版本的 dbunload 和相对较新版本的数据库服务器一起使用,会报告出现错误,反之亦然。

  • 抽取实用程序 (dbxtract) 行为更改   在以前的发行版本中,dbxtract 用于抽取数据库的版本不必与运行数据库的数据库服务器的版本相同。现在,在将 dbxtract 用于版本 10.0.0 或更高版本的数据库时,所使用的 dbxtract 的版本必须与用于访问数据库的数据库服务器的版本相匹配。如果将较旧版本的 dbxtract 和相对较新版本的数据库服务器一起使用,会报告出现错误,反之亦然。

  • 锁定行为中的更改   在以前的发行版本中,在隔离级别 0 执行的 UPDATE 或 DELETE 语句会在不受该语句影响的行的行锁处阻塞。现在,UPDATE 或 DELETE 语句对某个不受其影响的行记录目标或进行排它锁定的可能性更小。开发应用程序时,如果将隔离级别 0 或 1 与 UPDATE 和 DELETE 语句一起使用时要谨慎,并且要确保应用程序可以接受该行为。请参见更新过程中的锁定删除过程中的锁定

  • 对属性名称的更改   本发行版本中重命名了以下属性:

    旧名称 新名称
    CacheHitsEng CacheHits
    CacheReadEng CacheRead
    DiskReadEng DiskRead
    ReadHint DiskReadHint
    ReadHintScatter DiskReadHintPages
    ReadHintScatterLimit DiskReadHintScatterLimit

    有关详细信息,请参见连接属性、数据库属性和数据库服务器属性

  • 语言选择实用程序 (dblang)   在以前的版本中,只有在安装过程中选择了国际资源开发工具包(International Resources Development Kit,简称 IRDK)时,才会安装此实用程序。而在该版本中,会始终安装所有国际资源和语言选择实用程序 (dblang)。

  • 临时表及索引的缺省 dbspace   临时表只能在 TEMPORARY dbspace 中创建。如果在 CREATE TABLE 语句的 IN 子句中指定 SYSTEM dbspace,则会忽略 IN 子句,而且会在临时 dbspace 中创建临时表。如果在 CREATE TABLE 语句的 IN 子句中指定用户定义 dbspace,则会返回错误。同样,在创建临时对象时,会忽略 default_dbspace 选项。

  • 向临时表中装载数据   将数据装载到临时表中时,可以不再装载处于 ON COMMIT DELETE 的本地临时表。在以前的版本中,可以将数据装载到使用 ON COMMIT DELETE ROWS 定义的本地临时表中。

    现在,当运行 LOAD TABLE 语句时,会自动执行自动提交;在以前的版本中,并不总是这样。

  • 数据库服务器选项   现在,Mac OS X 支持服务器选项 -uc 和 -ui。以前,它们仅在 Linux 上受支持。在 Linux 上,-ui 服务器选项用于打开 [服务器启动选项] 窗口,显示数据库服务器消息窗口并启动数据库服务器(无论 X 窗口服务器是否启动)。如果在 Mac OS X 上没有可用的显示,-ui 会在新窗口内显示数据库服务器消息并以 shell 模式启动数据库服务器。-uc 服务器选项用于在 shell 模式下启动数据库服务器。请参见-uc 数据库服务器选项-um 数据库服务器选项

  • 远程数据访问不再使用不支持 UNICODE 调用的 ODBC 驱动程序   远程数据访问不再使用不支持 UNICODE 调用的 ODBC 驱动程序。结果是,对于非 UNICODE ODBC 驱动程序,远程数据访问不再对来自 ODBC 驱动程序的数据执行任何字符集转换。

  • SYSFILE 系统视图   现在 SYSFILE 兼容性视图中包括了临时文件的一行。