1.0 简介
2.0 受支持的软件和规范
3.0 限制
3.1 必须联机才能从存储过程生成 Java Bean 或 EJB 方法
4.0 已知问题
4.1 数据库模型
4.2 SQL 查询
4.3 数据库连接
4.4 SQL DDL
4.5 错误报告
4.6 在 Oracle 中运行 SQL 语句将创建不正确的表
4.7 数据导出
4.8 在数据库项目中重命名文件夹
4.9 SQL 注释
4.10 在 SQL 构建器中打开 SQL 语句之前检入和检出它们
4.11 不要立即将新创建的 SQL 语句添加至版本控制
4.12 编辑 Java 存储过程
4.13 连接至 DB2/390(CP930)时 DBCS 数据被截断
4.14 当关闭只读文档的编辑器时丢失了更改
4.15 对于非英语语言环境,模式对象标识丢失了引号
4.16 连接至 DB2 服务器
4.17 当使用 DB2 版本 7 客户机时,不支持从 DB2 版本 8 中删除 Java 存储过程
4.18 为 DB2 表 UDF 手工更改返回的 SQL 数据类型
4.19 随 WebSphere Studio 一起提供的 Sequelink 5.1 的问题
4.20 DataDirect Sequelink 5.3 驱动程序
4.21 从 Microsoft SQL Server 中检索表时发生问题
4.22 连接至 Cloudscape 5.1 时发生问题
4.23 移动/重命名/删除 JDBC JAR 文件时产生的错误消息
4.24 导入、删除或重新导入 EJB JAR 文件时出现重复的模式节点
4.25 关系数据导出期间出现毁坏的阿拉伯语错误消息
WebSphere Studio 中的关系数据库工具允许您连接至数据库、浏览或导入数据库设计、使用向导设计新的数数据库、将新设计导出至数据库、使用“SQL 构建器”创建和执行 SQL 查询、创建和执行 DB2 存储过程和 DB2 用户定义的函数。关系数据库工具是通过“数据”透视图中的“数据定义”视图和“数据库服务器”视图来访问的。
关系数据库工具支持连接到下列数据库类型以及从中进行导入:
- SQL 92 和 99
- Cloudscape 5.0.4
- DB2 UDB 6.1、7.1、7.2 和 8.1
- DB2 UDB for iSeries 4.5 和 5.1
- DB2 UDB OS/390 版 6 和 7
- DB2 UDB 精简版 8.1
- Oracle 8i 8.1.7
- Oracle 9i 9.0.1
- SQL Server Enterprise 7.0 SP2
- SQL Server Enterprise 2000
- Sybase Adaptive Server Enterprise 11.9.2、12 和 12.5
- Informix Dynamic Server.2000 9.2
- Informix Dynamic Server 7.3、9.3 和 9.3.1
- MySQL 3.23
- InstantDB 3.26
SQL 向导和 SQL 查询构建器中的 SQL 支持依赖于数据库供应商提供的支持级别。
Fullselect 支持:
连接支持:
- 仅适用于 DB2、Oracle、Cloudscape 和 Sybase。
- 对于 DB2,支持 Union、Union All、Except、Except All、Intersect 和 Intersect All 运算符以及值子句。
- 对于 Oracle,支持 Union、Union All、MINUS 和 Intersect 运算符。
- 对于 Sybase,支持 Union 和 Union All 运算符。
- 对于 Cloudscape,支持 Union 和 Union All 及值子句。
分组查询结果支持:
- DB2:内连接、左外连接、右外连接和全外连接
- Oracle:内连接、左外连接和右外连接。左外连接和右外连接的语法与 where 子句中的 Oracle“+”语法一致。
- Sybase、Cloudscape 和 MySQL:内连接、左外连接和右外连接。
Cast 表达式支持:
- DB2:Group By、Rollup、Cube 和 Grouping Sets
- Oracle:Group By、Rollup 和 Cube
- Sybase:Group By
- Cloudscape:Group By
- DB2 - CAST expression AS expression
- MS SQL Server - CAST expression AS data_type
- Oracle - 不支持 TRANSLATE
在 Linux 上,当使用“AS/400 Toolbox for Java JDBC 驱动程序”连接至“DB2 通用数据库 iSeries 版 V5R1”时,可能会发生崩溃。当输入错误的密码或将密码字段保留为空白时,就会发生该问题。如果发生这一问题,则重新启动该产品并使用正确的密码再次进行连接。
要使用使您能够从存储过程生成 Java Bean 或生成 EJB 方法的向导,您必须联机工作。
- 当前不支持为索引建模、检查和唯一性约束、触发器、结构化类型或标识列。
- 关系数据库工具不支持视图上的检查选项。
- 查询语句中不必要的括号将会引起解析器错误。
- 当前不支持在查询 WHERE 条件子句中使用圆括号。
- 大型 SQL 文件可能会减慢编辑器的速度。
- 对于 Oracle,update 语句必须为每一列逐个指定值,而不使用带有括号的组。逐个添加列,并使用子查询添加值,使用“值”表单元格组合框中的“构建表达式”选项来为列创建查询表达式。
- 对语句使用的数据库对象进行修改可能会导致“SQL 构建器”失败,原因是它不能再对本地数据模型成功地解析语句。
- 编辑视图然后打开包含该视图的语句可能会导致意外关闭工作台。
- 如果在 WebSphere Studio 外部强制断开数据库连接,则在语句执行时不会提示连接。将数据库从“数据库服务器”视图重新导入项目中以恢复连接。
- 不能使用从用户定义的函数派生的视图来创建查询。
- 只支持从“数据定义”视图中拖放数据库对象,而不支持从“数据库服务器”视图中拖放数据库对象。
- 如果导入带有 DATALINK 类型的列的 DB2 UDB 或 DB2 iSeries 版的表,则不会导入该列的链接控制选项。DATALINK 长度将缺省为 200,而链接选项将缺省为“无链接控制”。在将该表导入“数据”视图之后,可以在表编辑器中更新这些属性。
- 在“数据库服务器”视图中除去多个连接并不是始终都会成功的。当遇到这种问题时,您可以保持连接,也可以继续除去它们,一次除去一个。
- 对于与 iSeries 服务器的连接,不能正确导入字符串数据类型。导入 CHAR FOR BIT DATA、VARCHAR FOR BIT DATA 和 LONG VARCHAR FOR BIT DATA 类型时可以不带 FOR BIT DATA 选项。在这些情况下,在“数据”透视图中使用表编辑器来编辑受影响的列。
- 可能未从 iSeries 中正确导入包含 DBCS 字符的模式对象名。定界标识可能缺少了引号。在这些情况下,使用表编辑器来编辑列名和约束名。
- 对于 OS/390 连接,未导入主键约束的标识。
- 未正确导入是存储过程、函数或者使用标识子句定义的列缺省值,可能会导致表文档出现非 ASCII 字符。当装入文档时,非 ASCII 字符将导致问题。发生这种情况时,需要手工编辑问题 tblxmi 文档并除去缺省标记和值。
- 当使用 WebSphere Connect JDBC 驱动程序来连接至 SQL Server 数据库时,通常需要 3 个 jar 文件来指定类位置。建议将这些 jar 文件组合成单个 jar 文件。否则,在建立连接之后重新打开向导时,这些文件将变得非常大。这是由于驱动程序位置字段的长度造成的。
- 当从 DB2 版本 8 客户机中创建新的数据库连接时,如果想要使用 IBM DB2 NET DRIVER JDBC 驱动程序,则必须将这两个 JAR 文件添加至类位置字段:<DB2HOME>/java/db2jcc.jar and <DB2HOME>/java/common.jar(其中 <DB2HOME> 是 DB2 的安装目录)。如果不这样做,就会产生错误。注意:如果使用“新建数据库连接”向导而不将这些 JAR 文件添加至您的类位置,则不会装入存储过程。必须再次显示连接向导以便在类位置字段中输入文件。
- 当使用 DB2 UDB 版本 8 客户机来连接至 DB2 z/OS 版版本 7 或先前版本时,可能不会导入模式和表元数据。要修正该问题,应安装 DB2 z/OS 版 PTF UQ72081。
- 您可能会遇到与涉及 Oracle 长数据类型的导入或编辑相关的问题。
- 特别大型的 SQL DLL 文件可能会降低编辑器的速度。
- 在解析或执行期间,特别大型的 SQL DDL 文件可能会导致内存不足异常。
- 编辑 Oracle 脚本时可能会在编辑器的“大纲”视图中显示错误。例如,“CREATE SEQUENCE”、“CREATE OR REPLACE TRIGGER”和“END”语句将显示为是错误的。然而,可以继续将这些项导出至 Oracle 服务器。
当在解析 SQL 文件期间遇到错误时,通常问题与错误消息所报告的记号之后的下一个记号相关。在任务列表中也显示了错误消息。
当在 Oracle 数据库服务器上运行 SQL 文件时,需要最初选择创建表序列和触发器。这是因为 WebSphere 通过插入多余的空格来与 Oracle 不正确地交互作用。一旦创建了表,就转至 Oracle 服务器并编辑语句以除去插入的空格并添加“end;”命令。然后返回 WebSphere 并在服务器上再次运行该 SQL 语句,这一次应选择 Alter 语句和 insert 语句。
- 只能在后端数据库/目录中通过在 SQL DDL 脚本上运行在服务器上运行来删除现有构件。对于数据对象(例如,数据库、模式和表),如果想要删除现有对象,则应从弹出菜单中选择生成 DDL,并指定要删除现有语句。对于已生成的 SQL DDL 脚本,从弹出菜单中选择在服务器上运行。如果对象当前不存在于后端数据库/目录上,则对数据对象选择导出至服务器就足够了。
- 将某些语句导出至 Oracle 服务器可能会导致服务器上的标识之间产生间隔。例如,如下所示的语句:CREATE OR REPLACE TRIGGER SET_TRANSACTIONS_TRANID BEFORE INSERT ON TRANSACTIONS FOR EACH ROW WHEN (NEW.TRANID IS NULL) BEGIN SELECT TRANSACTIONS_TRANID_SQ.NEXTVAL INTO :NEW.TRANID FROM DUAL; END;
在对服务器执行此脚本之后,在 SELECT 子句中指定的标识可能会显示为有区别,例如,“TRANSACTION_TRANID_SQ.NEXTVAL”可能会显示为“TRANSACTIONS_TRANID_SQ . NEXTVAL”
在包含数据库的项目中更改文件夹名称将断开项目中与数据库相关的文件中的 URI 引用并导致错误。如果必须重命名文件夹,则必须更改与数据库相关的文件中的所有相关引用。例如,以下引用存在于表对象文件(具有扩展名 .tblxmi)中,并且项目中的数据库包含在称为 folder1 的文件夹中:
<database href="folder1/Con1_VIDEOS.dbxmi#RDBDatabase_1"/>
如果将文件夹名称更改为 folder2,则必须改变此行以反映此更改:
<database href="folder2/Con1_VIDEOS.dbxmi#RDBDatabase_1"/>
SQL 注释(前置两个短划线:-- 的行)在 SQL 构建器中不受支持。
如果正在编辑受版本控制的任何 SQL 语句(.sqx 文件),则确保在检入或检出语句时,这些语句未在“SQL 构建器”中打开。(在“导航器”视图中)检出文件然后编辑语句。在完成编辑语句之后,保存更改、关闭“SQL 构建器”,并将文件又检入回来。
如果在您创建新的 SQL 语句时提示您将它添加至版本控制,不要这样做。使用“SQL 构建器”对文件进行任何必需的更改,关闭文件,然后将它添加至版本控制。
- 如果项目是 Java 项目,则编辑器在 Java 存储过程的第一行的标记栏中显示一个发光灯泡图标。可以忽略此标记。当构建 Java 存储过程时,此标记不会导致问题。
- 编辑器允许您向 Java 存储过程的源代码中添加断点。然而,将忽略这些断点,原因是尚不支持调试 Java 存储过程。
由于 JDBC 限制,当连接至 DB2/390(CP930)时,某些 DBCS 数据按照 UTF-8 编码的数据长度被截断了。“SELECT”语句可将 10 个 SBCS 片假名字符作为 3 个片假名字符来接收。存储在 OS/390 的表中的实际数据是十六进制数“8182838485868788898A”,它是 10 个日语片假名字符(1 个字节表示 1 个字符)。然而,当使用具有缺省设置的 JDBC 驱动程序时,接收到的查询数据只显示 3 个字符(“efbdb1efbdb2efbdb3”)作为 UTF-8 格式的 9 个有效字节,这将在 JDBC 驱动程序中从“efbdb1efbdb2efbdb3efbdb4efbdb5efbdb6efbdb7efbdb8efbdb9efbdba”中被剪切掉。
如果检出了文档(即,标记为只读),而编辑器已对该文档打开,则在关闭编辑器时所有暂挂的更改都将丢失。确保在编辑器中打开文档之前已检出该文档。
JDBC 目录装入程序不能确定对于除了英语之外的语言环境模式对象标识是否应该是定界的。对于应该是定界的标识,在导入之后,打开模式/表编辑器来重命名模式对象。参阅数据库服务器文档来确定标识何时应该是定界的。
- 当连接至 DB2 通用数据库 iSeries 版时,必须在“新建数据库连接”向导的 JDBC 驱动程序下拉字段中选择 AS/400 Toolbox for Java JDBC 驱动程序。有关更多信息,请参阅帮助主题“使用 DB2 通用数据库 iSeries 版驱动程序来创建 JDBC 连接”。
- Linux、Unix 和 Windows 的 DB2 通用驱动程序不支持 Java 和 SQLJ 存储过程。
- 不支持从 DB2 V8 客户机连接至 Linux、Unix 和 Windows 上的 DB2 V7 服务器。
对于其它 DB2 服务器,有关建立数据库连接时如何选择 JDBC 驱动程序的信息,请参阅联机帮助。
如果您正在客户机工作站上使用 DB2 通用数据库版本 7,而在服务器上正在连接至 DB2 通用数据库版本 8,则将不能从 DB2 版本 8 服务器中删除 Java 存储过程。
当您使用“新建 SQL 用户定义的函数”向导来创建 DB2 表 UDF 时,该向导将对为每一列返回的数据建议 SQL 数据类型。
如果向导不能为一列映射相应的数据类型,或者如果您想对一列使用另外的返回数据类型,则在编辑器中打开生成的 UDF,并手工更改数据类型。
WebSphere Studio 在 WS_installdir/runtimes/aes_v4/lib/sljc.jar 中包括了 Sequelink 5.1 JDBC 客户机的 WebSphere 系列的版本。未启用 WebSphere Studio 关系数据库工具以使用此版本的客户机来进行 JDBC 连接。当在“连接”向导的 JDBC 类位置字段中指定了此 JAR 时,您可能会接收到以下错误消息:
IWAS0126E 尝试建立 connection_name 连接时遇到了问题。原因:由于所选择的 JAR 文件不是 WebSphere 系列的 DataDirect 客户机,因此未建立连接。应确保所选择的 JAR 来自于 WebSphere 安装。
关系数据库工具启用的客户机版本是从“IBM 支持机构”获得的。
WebSphere Studio V5.x 包括新版本的 DataDirect Sequelink JDBC 客户机。可以在 WS_installdir/runtimes/base_v5/lib/sljc.jar 归档中找到 DataDirect Sequelink 5.3 JDBC 客户机。有关如何使用 Sequelink 5.1 JDBC 驱动程序来连接至数据库的信息,请参阅关系数据库工具文档。
- 使用 DataDirect SequeLink 5.1、5.3 或 WebSphere Connect JDBC 驱动程序将不能从 Microsoft SQL Server V7 中检索表(如果您不是这些表的所有者的话)。例如,如果您拥有 DatabaseA 上的 Table1 和 Table2,而您在“数据库连接”向导中指定连接至 DatabaseB,则将只显示 Table1 和 Table2,尽管这些表不属于 DatabaseB,但是会检索它们,这是因为用来连接的用户标识是这些表的所有者。
- 如果您使用 DataDirect SequeLink 5.1 或 5.3 JDBC 驱动程序来从 Microsoft SQL Server 2000 中检索表,则您也需要拥有这些表。
使用 Cloudscape 5.1 来执行多次连接和断开连接操作可能会导致表在“数据库服务器”窗格中没有任何列。如果遇到了这种问题,则应重新启动 WebSphere Studio。
在第一次建立连接之后,JDBC JAR 文件(即,在“连接”向导的类位置字段中指定的 JAR 文件)将锁定而不能在当前 JVM 会话中使用。尝试重命名/移动/删除 JAR 文件将产生以下错误消息:“该进程不能访问该文件,因为它正在被另一个进程使用。”当工作台关闭时,该文件将被解锁。
在“数据”透视图和/或 J2EE 透视图打开的情况下,导入、删除和重新导入 EJB JAR 文件(样本或者其它内容)有时会导致在该 EJB JAR 文件的后端数据库下出现重复的模式节点。这些条目是无害处的,但是,建议您先关闭然后再重新启动透视图以除去重复的条目。
当使用阿拉伯语语言环境将关系数据导出至 UTF-8 UDB DB2 V7 数据库时,可能会遇到毁坏的错误消息(如果发生错误的话)。没有解决此问题的变通方法。
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.