Sybase 数据源的数据访问问题
本文提供访问 Sybase 数据源的故障诊断技巧。
访问 Sybase 数据库时您遇到的是哪类问题?
“Sybase 错误 7713: 存储过程只能以未链接的事务方式执行”错误
- JDBC 尝试使连接进入 autocommit(true) 方式。
- 未以兼容方式创建存储过程。
要修正 autocommit(true) 方式问题,请使用 Connection.setAutoCommit(false) 方式让应用程序将连接更改为链接方式,或使用 set chained on 语言命令。
要解决存储过程问题,请使用 sp_procxmode procedure_name “anymode” 命令。
“JZ0XS: 服务器不支持 XA 样式事务。请验证是否在该服务器上启用并许可事务功能部件”
当在未安装分布式事务管理 (DTM) 的服务器上尝试 XA 样式事务时,会发生此 错误。
- 安装 DTM 选项。
- 检查 license.dat 文件以验证是否安装 DTM 选项。
- 重新启动许可证管理器。
- 在 ISQL 中启用 DTM。
- 重新启动 ASE 服务。
容器管理的持久性 (CMP) 企业 bean 导致这些异常
此错误是由不正确地使用保留字所致。保留字不能用作列名。
要纠正此问题:重命名变量以移除保留字。您可以在 Quick Reference Guide for Sybase Adaptive Server Enterprise 15.5 中找到保留字的列表。此手册可以在以下网址中在线获取:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc70202.1550/html/quickref/CACIGGEB.htm。
使用 Sybase 时,会发生数据库死锁和 XA_PROTO 错误
- 将连接上的事务隔离级别更改为 TRANSACTION_READ_COMMITTED。 使用组装工具为不可共享的连接在连接上设置隔离级别,或对于可共享的连接,在您的数据源的资源引用中定义隔离级别。
- 通过执行以下一种操作修改 Sybase:
- 如果要使用现有表,请使用 alter table table name> lock datarows 命令修改表锁定方案以获取行锁定级别详细程度。
- 如果要将系统范围的锁定方案设置为数据行,所有后来创建的表继承该值并具有数据行的锁定方案。注: 您必须断开您的原始数据库和表。
当指定不正确的数据库名称时,Sybase 不抛出异常
验证在数据源属性上是否正确输入您的数据库名称。
当指定的数据库不存在时,大多数数据库(DB2®、Oracle、Informix®、MS SQL Server 和 Apache Derby)将抛出异常。但是,当指定不正确的数据库名称时,Sybase 不抛出异常。Sybase 生成 SQL 警告,然后连接到缺省数据库。如果拼错请求的数据库名称,Sybase 将您连接到找不到您请求的表的主数据库或缺省数据库。
如果这些步骤都不能修正您的问题,那么通过查看可用的在线支持(提示与技巧、技术说明和修订),检查是否已标识和记录了此问题。如果您的问题没有列出在那里,请与 IBM 支持机构联系。