JetCommitTransaction 関数
適用対象: Windows |Windows Server
JetCommitTransaction 関数
JetCommitTransaction 関数は、現在の保存ポイント中にデータベースの状態に加えられた変更をコミットし、前の保存ポイントに移行します。 最も外側の保存ポイントがコミットされた場合、その保存ポイントの間に行われた変更はデータベースの状態にコミットされ、セッションはトランザクションを終了します。
JET_ERR JET_API JetCommitTransaction(
__in JET_SESID sesid,
__in JET_GRBIT grbit
);
パラメーター
sesid
この呼び出しに使用するセッション。
grbit
次のオプションの 0 個以上を指定するビットのグループ。
値 |
説明 |
---|---|
JET_bitCommitLazyFlush |
トランザクションは通常コミットされますが、呼び出し元に戻る前にトランザクションがトランザクション ログ ファイルにフラッシュされるまで、この API は待機しません。 これにより、持続性を犠牲にしてコミット操作の期間が大幅に短縮されます。 クラッシュ前にログにフラッシュされないトランザクションは、 JetInit の次回の呼び出し中にクラッシュ復旧中に自動的に中止されます。 JET_bitWaitLastLevel0CommitまたはJET_bitWaitAllLevel0Commitが指定されている場合、このオプションは無視されます。 この JetCommitTransaction の呼び出しがこのセッションの JetBeginTransaction の最初の呼び出しと一致しない場合、このオプションは無視されます。 これは、最も外側の保存ポイントで発生する最後のアクションが、トランザクション全体が実際にディスクにコミットされるかどうかの決定要因であるためです。 |
JET_bitWaitAllLevel0Commit |
トランザクション ログ ファイルにまだフラッシュされていないセッションによって以前にコミットされたすべてのトランザクションは、すぐにフラッシュされます。 この API は、トランザクションがフラッシュされるまで待機してから、呼び出し元に戻ります。 このオプションは、セッションが現在トランザクションに存在しない場合でも使用できます。 このオプションは、他のオプションと組み合わせて使用することはできません。 このオプションは、Windows Server 2003 以降でのみ使用できます。 |
JET_bitWaitLastLevel0Commit |
セッションが以前にトランザクションをコミットしていて、トランザクション ログ ファイルにまだフラッシュされていない場合は、すぐにフラッシュする必要があります。 この API は、トランザクションがフラッシュされるまで待機してから、呼び出し元に戻ります。 これは、アプリケーションが以前に JET_bitCommitLazyFlush を使用して複数のトランザクションをコミットし、そのすべてをディスクにフラッシュする場合に便利です。 このオプションは、セッションが現在トランザクションに存在しない場合でも使用できます。 このオプションは、他のオプションと組み合わせて使用することはできません。 |
戻り値
この関数は、次のいずれかの戻りコードを 使用して、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張ストレージ エンジン エラー と エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errClientRequestToStopJetService |
JetStopService の呼び出しの結果、セッションに関連付けられたインスタンスのすべてのアクティビティが停止したため、操作を完了できません。 |
JET_errInstanceUnavailable |
セッションに関連付けられているインスタンスで、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要がある致命的なエラーが発生したため、操作を完了できません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errInvalidgrbit |
要求されたオプションの 1 つが無効であるか、実装されていません。 このエラーは、次の場合に JetCommitTransaction によって返されます。
|
JET_errNotInitialized |
セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。 |
JET_errNotInTransaction |
指定されたセッションがトランザクション内にないため、操作は失敗しました。 |
JET_errRestoreInProgress |
セッションに関連付けられているインスタンスで復元操作が進行中のため、操作を完了できません。 |
JET_errSessionSharingViolation |
同じセッションを複数のスレッドに同時に使用することはできません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errTermInProgress |
セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。 |
成功すると、特定のセッションの現在の保存ポイント中にデータベースに加えられた変更がコミットされ、その保存ポイントが終了します。 セッションの最後の保存ポイントが終了した場合、トランザクションは必要に応じてトランザクション ログ ファイルにフラッシュされ、セッションはトランザクションを終了します。
失敗した場合、セッションのトランザクション状態は変更されません。 データベースの状態に対する変更は行われません。 アプリケーションは JetRollback を 呼び出してトランザクションを中止する必要があります。
解説
特定のセッションに対する JetBeginTransaction の呼び出しごとに一致させるには、JetCommitTransaction または JetRollback の呼び出しが 1 つ必要です。
必要条件
要件 | 値 |
---|---|
Client |
Windows Vista、Windows XP、または Windows 2000 Professional が必要です。 |
[サーバー] |
Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。 |
Header |
Esent.h で宣言されています。 |
Library |
ESENT.lib を使用します。 |
[DLL] |
ESENT.dllが必要です。 |
参照
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService