共用方式為


JetCommitTransaction2 函式

適用于: Windows |Windows Server

JetCommitTransaction2函式會在目前的儲存點期間認可對資料庫狀態所做的變更,並將其遷移至先前的儲存點。 如果認可最外層的儲存點,在該儲存點期間所做的變更將會認可至資料庫的狀態,而會話將會結束交易。

JetCommitTransaction2函式是在Windows 8作業系統中引進。

JET_ERR JET_API JetCommitTransaction2(
  __in          JET_SESID sesid,
  __in          JET_GRBIT grbit,
  __in          DWORD cmsecDurableCommit,
  __out         JET_COMMIT_ID pCommitID
);

參數

sesid

要用於這個呼叫的會話。

grbit

指定下表所列之零或多個值的位群組。

意義

JET_bitCommitLazyFlush

交易會正常認可,但此 API 不會等待交易排清至交易記錄檔,然後再返回呼叫端。 這可大幅降低認可作業的持續時間,代價為持久性。 下次呼叫 JetInit 函式時,當機時,在損毀復原期間,不會排清到記錄檔的任何交易都會自動中止。

如果指定JET_bitWaitLastLevel0Commit或JET_bitWaitAllLevel0Commit,則會忽略此選項。

如果 這個 JetCommitTransaction2 呼叫不符合此會話 之 JetBeginTransaction 函式的第一次呼叫,則會忽略此選項。 這是因為在最外層儲存點上發生的最後一個動作是判斷整個交易是否實際認可至磁片的因素。

JET_bitWaitAllLevel0Commit

任何尚未排清至交易記錄檔的會話先前認可的所有交易都會立即排清。 此 API 會等到交易已排清,再返回呼叫端。

即使會話目前不在交易中,也可以使用此選項。

此選項無法與任何其他選項搭配使用。

此選項適用于從 Windows Server 2003 開始的 Windows Server 作業系統版本。

JET_bitWaitLastLevel0Commit

如果會話先前已認可任何交易,而且尚未排清到交易記錄檔,則應該立即排清。 此 API 會等到交易已排清,再返回呼叫端。 如果應用程式先前已使用 JET_bitCommitLazyFlush 認可數個交易,而且現在想要將所有交易排清到磁片,這非常有用。

即使會話目前不在交易中,也可以使用此選項。

此選項無法與任何其他選項搭配使用。

cmsecDurableCommit

認可延遲交易的持續時間。

pCommitID

與此認可記錄相關聯的認可識別碼。

傳回值

此函式會傳回具有下表所列其中一個傳回碼 的JET_ERR 資料類型。 如需可能的可延伸儲存引擎 (ESE) 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤錯誤處理參數

傳回碼

Description

JET_errSuccess

作業已成功完成。

JET_errClientRequestToStopJetService

無法完成作業,因為與會話相關聯之實例上的所有活動因 JetStopService 函式呼叫而停止。

JET_errInstanceUnavailable

無法完成作業,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。

此錯誤只會由從 Windows XP 開始的 Windows 作業系統版本傳回。

JET_errInvalidgrbit

要求的其中一個選項無效或未實作。 當發生下列情況時, JetCommitTransaction2 函式會傳回此錯誤:

  • 指定了不合法的 grbit

  • JET_bitWaitLastLevel0Commit與另一個 grbit一起指定。

  • JET_bitWaitAllLevel0Commit與另一個 grbit一起指定。

JET_errNotInitialized

無法完成作業,因為與會話相關聯的實例尚未初始化。

JET_errNotInTransaction

作業失敗,因為指定的會話不在交易中。

JET_errRestoreInProgress

無法完成作業,因為與會話相關聯的實例上正在進行還原作業。

JET_errSessionSharingViolation

同一個會話不能同時用於一個以上的執行緒。

此錯誤只會由從 Windows XP 開始的 Windows 作業系統版本傳回。

JET_errTermInProgress

無法完成作業,因為與會話相關聯的實例正在關閉。

成功時,將會認可在指定會話的目前儲存點期間對資料庫所做的任何變更,且該儲存點將會結束。 如果會話的最後一個儲存點已結束,則交易會選擇性地排清到交易記錄檔,而會話將會結束交易。

失敗時,會話的交易狀態會保持不變。 不會變更資料庫狀態。 應用程式應該呼叫 JetRollback 函式來中止交易。

備註

必須有一個 JetCommitTransaction2JetRollback 呼叫,才能比對指定會話的每個 JetBeginTransaction 呼叫。

規格需求

需求

用戶端

需要Windows 8。

Server

需要Windows Server 2012。

標頭

在 Esent.h 中宣告。

程式庫

使用 ESENT.lib。

Dll

需要ESENT.dll。

另請參閱

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService