【问题标题】:What does sql server do when a JPA transaction fails across a network?当 JPA 事务通过网络失败时,sql server 会做什么?
【发布时间】:2018-10-15 19:07:56
【问题描述】:

我正在使用 JPA 通过 WAN 连接到 SQL 服务器。我无法找到有关当我开始涉及写入远程数据库的 JPA 事务时会发生什么的信息,但 WAN 连接在提交之前或提交期间断开。

在每笔交易中,我都会传输一个标头和数百个详细信息行。

远端数据库是否知道足以丢弃所有更改?

显然,请求回滚本地应用程序不会产生任何影响,因为 WAN 链接已关闭。

【问题讨论】:

    标签: sql-server transactions jpa-2.0 wan


    【解决方案1】:

    我猜:

    • “连接断开”是指 dbms-client-driver 向您的应用程序代码发出连接已丢失的信号。
    • 您只有一个 DBMS,这意味着没有两阶段提交。

    那么:

    不管你是通过 WAN 还是 LAN 使用 sql-server。交易要么完全完成,要么根本不完成。 这就是交易的本质。

    因此,如果连接在提交之前断开,服务器将回滚所有内容。无法在应用程序级别重新连接以完成事务。

    如果连接在提交期间断开,则取决于实现和确切的时间点,事务可能会完全持久化或完全回滚。

    您可以绝对确定只要提交返回到您的代码,所有内容都会按预期保存。

    请注意,“连接断开”可能会在可能很长(几分钟)的超时后发生。在那个时候,事务会保留所有的锁,并且可能会减慢整个系统的速度。如果您通过较慢的网络进行通信,这些超时可能会设置为更长的时间间隔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2012-12-06
      相关资源
      最近更新 更多