JetBeginTransaction3 函式
適用于: Windows |Windows Server
JetBeginTransaction3 函式會導致會話進入交易並建立新的儲存點。 此函式可以在單一會話中多次呼叫,以建立額外的儲存點。 這些儲存點可用來選擇性地保留或捨棄資料庫的變更。
JetBeginTransaction3 函式是在 Windows 8 作業系統中引進的。
JET_ERR JET_API JetBeginTransaction3(
__in JET_SESID sesid,
__in int64 trxid,
__in JET_GRBIT grbit
);
參數
sesid
要用於此呼叫的會話。
trxid
使用者提供的選擇性識別碼,用來識別交易。
grbit
指定下表所列之呼叫選項值的零或多個位群組。
值 |
意義 |
---|---|
JET_bitTransactionReadOnly |
交易不會修改資料庫。 如果嘗試更新,該作業將會失敗,並JET_errTransReadOnly回應碼。 除非指定的會話尚未在交易中,否則會忽略此選項。 此選項適用于從 Windows XP 開始的 Windows 作業系統版本。 |
傳回值
此函式會 傳回具有下表所列其中一個傳回碼的JET_ERR 資料類型。 如需可能可延伸儲存體引擎 (ESE) 錯誤的詳細資訊,請參閱 可延伸儲存體引擎錯誤 和 錯誤處理參數 。
傳回碼 |
描述 |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errClientRequestToStopJetService |
無法完成作業,因為由於呼叫 JetStopService 函式而停止了與會話相關聯實例上的所有活動。 |
JET_errInstanceUnavailable |
無法完成作業,因為與會話相關聯的實例發生嚴重錯誤,因此需要撤銷所有資料的存取權以保護該資料的完整性。 從 Windows XP 開始的 Windows 版本會傳回此傳回碼。 |
JET_errNotInitialized |
無法完成作業,因為與會話相關聯的實例尚未初始化。 |
JET_errRestoreInProgress |
無法完成作業,因為與會話相關聯之實例上的還原作業正在進行中。 |
JET_errSessionSharingViolation |
同一個會話不能同時用於一個以上的執行緒。 從 Windows XP 開始的 Windows 版本會傳回此錯誤。 |
JET_errTermInProgress |
無法完成作業,因為與會話相關聯的實例正在關閉。 |
JET_errTransTooDeep |
無法啟動新的交易,因為會話已經在資料庫引擎允許的最大儲存點深度。 |
成功時,提供的會話將會在交易內。 如果會話先前在交易內,將會建立新的儲存點。
失敗時,會話的交易狀態會維持不變。 不會變更資料庫狀態。
備註
如需交易運作方式的詳細資訊,請參閱 JetBeginTransaction 。
需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows 8。 |
Server |
需要 Windows Server 2012。 |
頁首 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要 ESENT.dll。 |
另請參閱
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetGetSystemParameter
JetResetSessionCoNtext
JetRollback
JetSetSessionCoNtext
系統參數