如果两个并行事务正在运行并且其中一个已回滚,则在使用准备好的语句进行更新时,结合使用 TRANSACTION_SERIALIZABLE 隔离级别和 Sybase Adaptive Server 的捆绑 Sun 驱动程序的应用程序可能会挂起。连接回滚失败,系统显示以下消息,并且已回滚的连接不能再使用:
java.sql.SQLException:[sunm][Sybase JDBC 驱动程序] 由于线的争用而无法提交请求
Sybase Adaptive Server 不支持 TRANSACTION_REPEATABLE_READ 隔离级别。但是在查询 DatabaseMetaData 时,捆绑的 Sun 驱动程序会返回数据库支持此隔离级别的内容。使用此隔离级别的应用程序将失败。
使用捆绑的 Sun 驱动程序的应用程序无法设置 TRANSACTION_READ_UNCOMMITTED 隔离级别。在首次访问 DataBaseMetaData 时,应用程序会抛出以下异常:
java.sql.SQLException:[sunm][Sybase JDBC 驱动程序][Sybase] 优化程序无法找到唯一的索引,它可以使用该索引对表 "sybsystemprocs.dbo.spt_server_info" 执行隔离级别 0 扫描。