启发式回滚的结果

这些主题描述了在发生启发式回滚时协调者和参与者上所发生的事件,以及此过程如何会导致不一致的数据库:
  1. 在发生回滚的参与者数据库服务器上,记录放置在数据库服务器逻辑日志(HEURTX 类型)中。事务拥有的锁和资源得以释放。参与者线程将以下消息写入数据库服务器消息日志,指示发生了长事务状况和回滚:
    Transaction Completed Abnormally (rollback): 
    tx=address flags=0xnn 
  2. 协调者发出后决策阶段指令以落实事务。
    发生启发式回滚的数据库服务器上的参与者线程将错误消息 -699 返回至协调者,如下所示:
    -699 Transaction heuristically rolled back. 

    此时该错误消息不返回至应用程序;它对协调者来说是条内部通知。协调者等待至所有参与者响应该落实指令。 直至所有参与者报告后协调者才能确定数据库一致性。

  3. 接下去的步骤取决于发生在其他参与者上的操作。可能有两种情境。