UDS-D beendet jede verteilte Transaktion so, dass Änderungen entweder auf den Datenbanken aller beteiligten DB-Konfigurationen durchgeführt werden oder auf keiner Datenbank.
Das Anwenderprogramm beendet eine Transaktion mit einer FINISH-Anweisung. Diese FINISH-Anweisung wird automatisch an alle Konfigurationen gesendet, in denen Teiltransaktionen eröffnet wurden.
Damit eine verteilte Transaktion, die in mindestens einer Datenbank einer entfernten DB-Konfiguration geändert hat, auch im Fehlerfall konsistent beendet werden kann, ist das Transaktionsende in zwei Phasen aufgeteilt:
In der ersten Phase lässt UDS-D die geänderten Seiten jeder Teiltransaktion ausfallsicher in der RLOG-Datei der jeweiligen Konfiguration protokollieren.
Nach erfolgreichem Ablauf der ersten Phase ist sichergestellt, dass alle Teiltransaktionen auf die gleiche Weise abschließen können, entweder mit FINISH oder mit FINISH WITH CANCEL.
In der zweiten Phase beendet UDS-D alle Teiltransaktionen mit FINISH, wenn die erste Phase in allen Konfigurationen erfolgreich war, oder mit FINISH WITH CANCEL, wenn die erste Phase in mindestens einer Konfiguration nicht erfolgreich war.
Diese Vorgehensweise heißt Zwei-Phasen-Ende-Protokoll (Two Phase Commit).
Bei logischem Verbindungsverlust oder Rechnerausfall während der Beendigungsphase einer verteilten Transaktion sorgt UDS-D dafür, dass die konfigurationsübergreifende Konsistenz bzw. die UDS/SQL-openUTM-Konsistenz erhalten bleibt (z.B. bei einem Session-Wiederanlauf oder im Rahmen der Transaktionsüberwachung, siehe Abschnitt „Überwachen sekundärer Teiltransaktionen, die im Zustand PTC sind“).
Der Ablauf des Zwei-Phasen-Ende-Protokolls hängt davon ab, wie eine Transaktion verteilt ist:
nur über UDS-D (siehe Abschnitt „Ablauf des Zwei-Phasen-Ende-Protokolls bei Verteilung über UDS-D“) oder
über UDS-D und openUTM (siehe Abschnitt „Ablauf des Zwei-Phasen-Ende-Protokolls in UDS-D bei Verteilung über UDS-D und openUTM“).
Verteilung über UDS-D
Die Verteilkomponente in der Anwendertask steuert das Zwei-Phasen-Ende-Protokoll. Die primäre Teiltransaktion kommt nicht in den Zustand PTC (PTC: Prepared to Commit, siehe Abschnitt „Zustand PTC“).
Verteilung über UDS-D und openUTM
openUTM steuert das Zwei-Phasen-Ende-Protokoll. Auch die primäre Teiltransaktion kommt in den Zustand PTC.