Fungsi JetCommitTransaction
Berlaku untuk: Windows | Windows Server
Fungsi JetCommitTransaction
Fungsi JetCommitTransaction menerapkan perubahan yang dilakukan pada status database selama titik penyimpanan saat ini dan memigrasikannya ke titik penyimpanan sebelumnya. Jika titik penyimpanan terluar dilakukan, perubahan yang dilakukan selama titik penyimpanan tersebut akan diterapkan pada status database dan sesi akan keluar dari transaksi.
JET_ERR JET_API JetCommitTransaction(
__in JET_SESID sesid,
__in JET_GRBIT grbit
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
grbit
Sekelompok bit yang menentukan nol atau beberapa opsi berikut.
Nilai |
Makna |
---|---|
JET_bitCommitLazyFlush |
Transaksi dilakukan secara normal tetapi API ini tidak menunggu transaksi dibersihkan ke file log transaksi sebelum kembali ke pemanggil. Ini secara drastis mengurangi durasi operasi penerapan dengan biaya durabilitas. Setiap transaksi yang tidak dihapus ke log sebelum crash akan dibatalkan secara otomatis selama pemulihan crash selama panggilan berikutnya ke JetInit. Jika JET_bitWaitLastLevel0Commit atau JET_bitWaitAllLevel0Commit ditentukan, opsi ini diabaikan. Jika panggilan ke JetCommitTransaction ini tidak cocok dengan panggilan pertama ke JetBeginTransaction untuk sesi ini, opsi ini diabaikan. Ini karena tindakan akhir yang terjadi pada titik penyimpanan terluar adalah faktor penentuan apakah seluruh transaksi benar-benar berkomitmen pada disk. |
JET_bitWaitAllLevel0Commit |
Semua transaksi yang sebelumnya dilakukan oleh sesi apa pun yang belum dihapus ke file log transaksi akan segera dihapus. API ini akan menunggu hingga transaksi dihapus sebelum kembali ke pemanggil. Opsi ini dapat digunakan meskipun sesi saat ini tidak dalam transaksi. Opsi ini tidak dapat digunakan dalam kombinasi dengan opsi lain. Opsi ini hanya tersedia pada Windows Server 2003. |
JET_bitWaitLastLevel0Commit |
Jika sesi sebelumnya telah melakukan transaksi apa pun dan belum dihapus ke file log transaksi, sesi tersebut harus segera dibersihkan. API ini akan menunggu hingga transaksi dihapus sebelum kembali ke pemanggil. Ini berguna jika aplikasi sebelumnya telah melakukan beberapa transaksi menggunakan JET_bitCommitLazyFlush dan sekarang ingin membersihkan semuanya ke disk. Opsi ini dapat digunakan meskipun sesi saat ini tidak dalam transaksi. Opsi ini tidak dapat digunakan dalam kombinasi dengan opsi lain. |
Tampilkan Nilai
Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.
Menampilkan kode |
Deskripsi |
---|---|
JET_errSuccess |
Operasi berhasil diselesaikan. |
JET_errClientRequestToStopJetService |
Tidak dimungkinkan untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService. |
JET_errInstanceUnavailable |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi telah mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errInvalidgrbit |
Salah satu opsi yang diminta tidak valid atau tidak diimplementasikan. Kesalahan ini akan dikembalikan oleh JetCommitTransaction ketika:
|
JET_errNotInitialized |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errNotInTransaction |
Operasi gagal karena sesi yang diberikan tidak dalam transaksi. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errSessionSharingViolation |
Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errTermInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan. |
Jika berhasil, setiap perubahan yang dilakukan pada database selama titik penyimpanan saat ini untuk sesi yang diberikan akan diterapkan dan titik penyimpanan tersebut akan berakhir. Jika titik penyimpanan terakhir untuk sesi berakhir, transaksi akan secara opsional dibersihkan ke file log transaksi dan sesi akan keluar dari transaksi.
Jika gagal, status transaksional sesi tidak akan berubah. Tidak ada perubahan pada status database yang akan terjadi. Aplikasi harus memanggil JetRollback untuk membatalkan transaksi.
Keterangan
Harus ada satu panggilan ke JetCommitTransaction atau JetRollback untuk mencocokkan setiap panggilan ke JetBeginTransaction untuk sesi tertentu.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien |
Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional. |
Server |
Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Gunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Lihat juga
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService