處理復原作業

如果資源管理員、交易式用戶端或 KTM 判斷交易不能認可交易,通常因為偵測到錯誤 () ,所以通常無法認可交易。

若要回復交易,資源管理員可以呼叫 ZwRollbackEnlistment。 在資源管理員呼叫 ZwCreateEnlistment 以在交易中編列之後,它可以隨時回復交易,再呼叫 ZwPrepareComplete

交易式用戶端可以藉由呼叫 ZwRollbackTransaction來回複其交易。 在交易式用戶端呼叫 ZwCreateTransaction 來建立交易之後,可以隨時回復交易,再呼叫 ZwCommitTransaction

此外,交易式用戶端可以藉由呼叫 ZwSetInformationTransaction來設定交易的逾時值。 如果交易尚未由指定的時間量認可,KTM 會回復交易。

呼叫 ZwRollbackEnlistmentZwRollbackTransaction 時,或超過逾時值時,KTM 會將TRANSACTION_NOTIFY_ROLLBACK 通知 傳送給所有資源管理員。

當每個資源管理員收到TRANSACTION_NOTIFY_ROLLBACK通知時,它必須執行下列動作:

  1. 將交易的資料還原至在資源管理員在交易中登記之前的狀態。

    一般而言,資源管理員會將交易儲存的初始資料從記錄資料流程複製到資料庫的公用永久儲存體,藉此還原交易的資料。 如需如何使用記錄資料流程的詳細資訊,請參閱 搭配 KTM 使用記錄資料流程

  2. 呼叫 ZwRollbackComplete

呼叫 ZwRollbackComplete之後,資源管理員應該呼叫 ZwClose 以關閉登記控制碼。

如果資源管理員起始復原作業,它必須使用其用戶端介面通知用戶端交易失敗。