以下列出了 10.0.1 版中引入的 SQL Anywhere 数据库和数据库服务器更改(根据类别分组)。
对使用查询内并行机制的时机的更改 查询内并行机制不再用于 background_priority 设置为 on 的连接。此外,如果当前正在处理请求的服务器线程的数量(ActiveReq 服务器属性),最近超出了授权该数据库服务器使用的计算机上的 CPU 内核的数量,则不使用查询内并行机制。请参见查询执行期间的并行。
新服务器属性 ExchangeTasksCompleted 返回自数据库服务器启动以来用于查询内并行机制的内部任务总数。请参见数据库服务器属性。
加密结果不再为确定型 以前,使用 ENCRYPT 函数的加密值为确定型。如果输入两个相同的输入字符串和两个相同的加密密钥,则会返回相同的输出数据(密码文本)。现在,可以使用新 encrypt_aes_random_iv 数据库选项来控制加密是否为确定型。新的缺省行为是非确定型。
不具有此数据库选项的数据库服务器(版本 10.0.0 和之前版本),无法从设置了此选项的数据库解密数据,即使在此选项设置为 Off 时也是如此。
ALTER DBSPACE RENAME 尝试打开未打开的 dbspace 以前,如果启动了使用 dbspace 的数据库,并且无法找到其中一个 dbspace,对该 dbspace 执行 ALTER DBSPACE ...RENAME 语句会在此目录中更新该 dbspace 的名称,但不会尝试启动该 dbspace。现在,数据库服务器将在目录更新后,尝试打开该 dbspace。请参见ALTER DBSPACE 语句。
对 CREATE、ALTER 和 DROP DBSPACE 语句的更改 CREATE DBSPACE 和 DROP DBSPACE 语句不再接受预定义的 dbspace 的名称(SYSTEM、TEMPORARY、TEMP、TRANSLOG 和 TRANSLOGMIRROR)。如果旧版本的 SQL Anywhere 数据库服务器创建的数据库中的一个用户 dbspace 与预定义的 dbspace 之一同名,则数据库服务器将始终引用该用户 dbspace。请参见预定义 dbspace。
对 sa_conn_info 系统过程的输出的更改 sa_conn_info 系统过程的输出已更改,以便能够给出有关连接正在等待的锁的更多信息。LockName 字段已删除。代替它的是两个新增字段 LockRowID 和 LockIndexID。如果连接正在等待与特定行标识符相关联的锁,LockRowID 会包含此行标识符。如果连接正在等待与特定索引相关联的锁,LockIndexID 会包含此索引的标识符。请参见sa_conn_info 系统过程。
您必须升级数据库才能使用此功能。请参见升级版本 10 及更高版本数据库。
某些系统过程不再需要 DBA 权限 sa_dependent_views、sa_get_dtt、sa_check_commit 和 sa_materialized_view_info 系统过程运行时不再需要 DBA 权限。
CREATE DATABASE 语句的缺省测量单位已删除 当使用 CREATE DATABASE 语句创建数据库时,如果为 DATABASE SIZE 指定了一个值,则指定测量单位不再为可选。请参见CREATE DATABASE 语句。
default_timestamp_increment 选项的新最大值 default_timestamp_increment 选项的最大值现在为 1000000(1 秒)。请参见default_timestamp_increment 选项 [数据库] [MobiLink 客户端]。
dbdata10.dll 已删除 已将 dbdata10 动态链接库提供的功能合并到 SQL Anywhere .NET 提供程序 DLL 中。因此,对于 Windows CE,现在有特定于平台的 SQL Anywhere .NET 提供程序 DLL 版本。
NetWare 上的缺省高速缓存大小已增加 NetWare 上数据库服务器高速缓存的缺省大小已从 2 MB 增加到 8 MB。请参见-c 服务器选项。
客户端语句高速缓存导致的行为更改 作为支持客户端语句高速缓存的结果,已引入以下行为更改:
CREATE PROCEDURE p() NO RESULT SET BEGIN ... END Prepare, Describe, Drop "call p" ALTER PROCEDURE p() RESULT( ... ) BEGIN ... END Prepare, Describe, Drop "call p" // describe returns no result set |
语言实用程序 (dblang) 不再需要管理员权限 在以前的 SQL Anywhere 版本中,用户必须以管理员身份登录才能通过使用 dblang 实用程序来更改 SQL Anywhere 本地化版本的语言设置。此要求现已删除。
DISH 服务名中的正斜线已不允许使用 为了防止对 DISH 服务名的错误解释,不再允许使用正斜线 (/) 作为服务名的一部分。请参见CREATE SERVICE 语句。
对 SACommand.UpdateRowSource 的缺省值的更改 以前,SACommand.UpdatedRowSource 的缺省值是 UpdatedRowSource.Both。此值现已更改为 UpdatedRowSource.OutputParameters。请参见UpdatedRowSource 属性。
对 PrefetchRows 连接参数的缺省值的更改 当使用 .NET 数据提供程序时,为了提高性能,PrefetchRows 连接参数的缺省值已从 10 更改到 200。SAConnectionStringBuilder.PrefetchRow 的缺省值也已更改为 200。如果结果集包含 BLOB 列,将禁用预取。请参见PrefetchRows 连接参数 [PROWS]。
经过验证的应用程序现在使用 authenticate.sql 来代替 saopts.sql 在 SQL Anywhere OEM 版的以前版本中,曾经建议您将验证语句存储在文件 install-dir\scripts\saopts.sql 中,以便在创建、重建或升级数据库时能够随时应用它。
现在建议您将验证字符串存储在文件 install-dir\scripts\authenticate.sql 中。请参见升级经过验证的数据库。
HP-UX 上现已接受长主机名 从 HP-UX 11i v2 2004 年 9 月的更新开始,系统管理员通过设置内核参数能够启用对 255 字节主机名的支持。但是,在已启用了对长主机名的支持的 HP-UX 计算机上的 SQL Anywhere 服务器上,MachineName 属性和 AppInfo HOST 密钥最多返回 64 字节主机名。现在 MachineName 和 AppInfo 都能够返回 255 字节主机名。
iAnywhere JDBC 驱动程序 URL 标头 在以前的版本中,当应用程序使用 iAnywhere JDBC 驱动程序连接到 SQL Anywhere 时,传递到 JDBC 驱动程序的 URL 以标头 jdbc:odbc: 开头。现在,URL 标头还可以用 jdbc:ianywhere: 开头。建议使用 jdbc:ianywhere:,以避免与 Sun JDBC-ODBC bridge 冲突。请参见将 URL 提供给驱动程序。
当注释值长度大于 128 字符时,使用 jConnect 检索表的列表 以前,如果 JDBC 应用程序连接(使用 jConnect)并请求表的列表,则即使表存在结果也可能为空。当 string_rtruncation 选项设置为 On,应用程序使用 DatabaseMetaData.getTables 方法,而且任何表的注释值都长于 128 字符时,会出现这种情况。现在,那些过长的注释值会截断为 128 字符,因此能够返回表的列表。您必须运行 jcatalog.sql 或升级数据库,才能使用此更改。请参见在数据库中安装 jConnect 系统对象或升级实用程序 (dbupgrad)。
比较 CHAR 和 NCHAR 值 对于 SQL Anywhere 10.0.0,将 CHAR 和 NCHAR 域结合会导致 NCHAR 比较。但是,这意味着当使用绑定为 SQL_C_WCHAR 的主机变量时,升级到 10.0.0 的应用程序可能会得到不同的结果或性能降低。在 SQL Anywhere 10.0.0 中,绑定为 SQL_C_WCHAR 的变量表示为 NCHAR。在 SQL Anywhere 10.0.1 中,引入了新推导规则,以提高与现有应用程序的兼容性,以及在结合 CHAR 和 NCHAR 域时提供一致的、可预见的结果。请参见CHAR 和 NCHAR 之间的比较。
2.6.12 之前的 Linux 内核上的异步 I/O 已禁用 由于 2.6.12 之前的 Linux 内核中存在一个错误,因此在其中一个受影响的内核上运行 SQL Anywhere 数据库服务器时,在缺省条件下异步 I/O 将被禁用。如果要使用异步 I/O,则必须将内核升级到 2.6.12 或之后版本。
OEM 版文档已移走 在以前版本的 SQL Anywhere OEM 版中,设置经过验证的应用程序的说明包含在单独的 .pdf 或 .html 文件中。现在,可在以下位置获得此信息:
卸载实用程序 -e 和 -t 选项用于区分大小写的数据库时不再需要区分大小写的表名 在以前的版本中,当使用 dbunload 实用程序和 -e 或 -t 选项卸载区分大小写的数据库时,这些选项需要区分大小写的表名。现在,表名不再区分大小写。
向临时表中装载数据 向临时表中装载数据时的行为已更改。除了那些使用 ON COMMIT DELETE ROWS 定义的 LOCAL TEMPORARY TABLE 之外,现在在针对临时表执行 LOAD TABLE 前后,将自动执行一个提交。现在,如果装载失败,临时表中的所有行将全部被删除,包括在装载之前已经存在的行。
对于带有 ON COMMIT DELETE ROWS 的 LOCAL TEMPORARY TABLE,则没有行为的更改;不会执行任何提交。这意味着装载期间如果出现故障而导致部分装载,此种类型的临时表将只包含某些已装载的行,同时还可能丢失装载前已存在的其它行。
同样,现在如果一个临时表包含另一个表的外键所引用的行,向此临时表中进行装载也会失败。
您无法向使用 ON COMMIT DELETE ROWS 定义的 GLOBAL TEMPORARY TABLE 进行装载。
使用 UCA 归类的日文数据库的区分大小写缺省值 创建日文数据库时 UCA 归类的区分大小写和区分重音缺省值,现在为区分。日文数据库定义为在日文计算机(OS 语言或字符集为日文)上创建的任何数据库或使用日文 CHAR 归类(如 932JPN 或 EUC_JAPAN)创建的任何数据库。
创建非日文数据库时 UCA 归类的区分大小写缺省值仍为不区分。
区分大小写和区分重音缺省值仍然可以分别使用 dbinit -c 和 -a(或 -c- 和 -a-)选项来替换,替换时既可以使用归类定制语法,也可以使用 CREATE DATABASE STATEMENT 的 CASE 和 ACCENT 子句。请参见初始化实用程序 (dbinit)和CREATE DATABASE 语句。
SQL Flagger 对 SQL/1992 标准的支持 不建议使用 SQL Flagger 对 SQL:1992(所有级别)的支持。
不建议使用 dbinit -e 选项 dbinit -e 选项用于在创建数据库时指定简单加密,目前不建议使用。使用 -ea 选项(尤其是 -ea simple)指定简单加密。请参见初始化实用程序 (dbinit)。
SADbType.oldbit 数据类型已删除 已将 SADbType.oldbit 枚举常量从 SQL Anywhere .NET 提供程序中删除。
不建议使用 -gx 服务器选项 在 Windows 桌面平台上,数据库服务器调度程序现在试图保持请求的关联度,以便它能够使用 CPU 高速缓存。这样一来,在一个 CPU 上运行尽可能多的请求。同样,也不建议使用 -gx 服务器选项(它用于指定数据库服务器要使用的操作系统线程的数量)。现在这个选项被数据库服务器忽略。
不建议使用 CREATE DATABASE 语句的 CASE 和 ACCENT 子句 由于使用 CREATE DATABASE STATEMENT 的 COLLATION 和 NCHAR COLLATION 添加了归类定制支持,因此不建议使用此语句的 CASE 和 ACCENT 子句。请参见CREATE DATABASE 语句。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |