次の方法で共有


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

次の表に示す 0 個以上の値を指定するビットのグループ。

説明

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

このコミット レコードに関連付けられている Commit-ID。

戻り値

この関数は、次の表に示すリターン コードの 1 つを使用して、 JET_ERR データ型を返します。 拡張可能記憶域エンジン (ESE) の可能性のあるエラーの詳細については、「 拡張記憶域エンジンエラーエラー処理パラメーター」を参照してください。

リターン コード

説明

JET_errSuccess

操作は正常に完了しました。

JET_errClientRequestToStopJetService

JetStopService 関数の呼び出しの結果、セッションに関連付けられているインスタンスのすべてのアクティビティが停止したため、操作を完了できません。

JET_errInstanceUnavailable

セッションに関連付けられているインスタンスで、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要がある致命的なエラーが発生したため、操作を完了できません。

このエラーは、Windows XP 以降の Windows オペレーティング システムのバージョンによってのみ返されます。

JET_errInvalidgrbit

要求されたオプションの 1 つが無効であるか、実装されていません。 このエラーは、次の場合に JetCommitTransaction2 関数によって返されます。

  • 無効な grbit が指定されています。

  • JET_bitWaitLastLevel0Commitが別の grbit と組み合わせて指定されました。

  • JET_bitWaitAllLevel0Commitが別の grbit と組み合わせて指定されました。

JET_errNotInitialized

セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。

JET_errNotInTransaction

指定されたセッションがトランザクション内にないため、操作は失敗しました。

JET_errRestoreInProgress

セッションに関連付けられているインスタンスで復元操作が進行中のため、操作を完了できません。

JET_errSessionSharingViolation

同じセッションを複数のスレッドに同時に使用することはできません。

このエラーは、Windows XP 以降の Windows オペレーティング システムのバージョンによってのみ返されます。

JET_errTermInProgress

セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。

成功すると、特定のセッションの現在の保存ポイント中にデータベースに加えられた変更がコミットされ、その保存ポイントが終了します。 セッションの最後の保存ポイントが終了した場合、トランザクションは必要に応じてトランザクション ログ ファイルにフラッシュされ、セッションはトランザクションを終了します。

失敗した場合、セッションのトランザクション状態は変更されません。 データベースの状態に対する変更は行われません。 アプリケーションは 、JetRollback 関数を呼び出してトランザクションを中止する必要があります。

解説

特定のセッションに対する JetBeginTransaction の呼び出しごとに一致させるには、JetCommitTransaction2 または JetRollback の呼び出しが 1 つ必要です。

要件

要件

Client

Windows 8が必要です。

[サーバー]

Windows Server 2012が必要です。

Header

Esent.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

関連項目

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService