認可和回復交易

若要在手動提交模式下提交或回滾交易,應用程式會呼叫 SQLEndTran。 支援交易的DBMS驅動程式通常透過執行 COMMITROLLBACK 敘述來實作此功能。 當連線處於自動提交模式時,驅動程式管理器不會呼叫 SQLEndTran ;即使應用程式嘗試回滾交易,它也會直接回傳SQL_SUCCESS。 由於不支援交易的 DBMS 驅動程式總是處於自動提交模式,他們可以選擇實作 SQLEndTran 以回傳 SQL_SUCCESS而不做任何操作,或是根本不實作。

備註

應用程式不應透過使用 SQLExecuteSQLExecDirect 執行 COMMITROLLBACK 語句來提交或回滾交易。 這樣做的影響尚未明確定義。 可能的問題包括驅動程式不再知道交易是否正在進行,以及這些敘述在不支援交易的資料來源時失效。 這些應用程式應該直接呼叫 SQLEndTran

如果應用程式將環境句柄傳給 SQLEndTran ,但沒有傳遞連線句柄,驅動程式管理器在概念上會呼叫 SQLEndTran ,並使用每個在環境中有一個或多個活躍連線的驅動程式的環境句柄。 驅動程式接著在環境中的每個連線上提交交易。 然而,重要的是要明白,驅動程式與驅動管理員都不會對環境中的連線執行兩階段提交;這僅是為了方便同時呼叫 SQLEndTran 來存取環境中的所有連線。

兩階段提交 通常用於提交分散於多個資料來源的交易。在第一階段,資料來源會被輪詢是否能提交其交易部分。在第二階段,交易實際上已提交至所有資料來源。若第一階段有任何資料來源回覆無法提交交易,則第二階段不會發生。)