使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

使用 XA 事务、 Microsoft SQL Server JDBC 驱动程序和 Microsoft SQL Server 作为后台数据库时,您可能会有孤立事务挂起在 SQL Server 上的如果事务管理器遇到故障或连接问题。

此外,您可能会遇到以下常见症状之一︰

  • 交易记录处于挂起状态的 SQL Server 实例上很长时间。它们可能具有空值或-2会话 ID 在数据库中。

  • 事务长时间阻止事务有-2会话 id。这会导致锁超时或冻结的线程。

原因

事务管理器和 SQL Server 之间的连接丢失时未准备好的交易记录,则 SQL Server JDBC 驱动程序不会不清理这些交易记录,并且他们可能会继续使用资源并阻止其他事务。由于 SQL Server 的 XA 实现 JDBC 驱动程序中,SQL Server 无法检测异常的事务管理器断开。因此,SQL Server 为这些交易记录保留系统中直到 XA 事务超时或重新启动数据库。超时的 SQL Server 实例上使用无穷,并且不可配置数据库上。

解决方法

若要解决此问题,请使用下列方法之一:

  • 重新启动数据库服务器,当您遇到任何 Java 虚拟机 (JVM) 崩溃或网络连接问题,导致在这些孤立的事务。

  • 分别以清理其资源的数据库上停止孤立的事务。若要验证事务孤立的请确保它不是在怀疑 (准备) 或一个目前完成事务。JVM 并成功恢复周期最后通过重新启动相关的任何事务应被孤立。

  • 设置超过最长事务以使其停止超过超时值时,就立即对 XA 事务的超时值。您可以通过调用XAResource.setTransactionTimeout()方法来执行此操作。

  • 对于许多第三方事务经理,由调用代码不直接访问XAResource对象和事务管理器不会设置事务超时值。在这种情况下,外部应用程序可用于将事务超时时间设置为新的默认值。此新的默认设置将适用于所有未指定事务超时的事务。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×