Fungsi JetCommitTransaction2
Berlaku untuk: Windows | Windows Server
Fungsi JetCommitTransaction2 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.
Fungsi JetCommitTransaction2 diperkenalkan dalam sistem operasi Windows 8.
JET_ERR JET_API JetCommitTransaction2(
__in JET_SESID sesid,
__in JET_GRBIT grbit,
__in DWORD cmsecDurableCommit,
__out JET_COMMIT_ID pCommitID
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
grbit
Sekelompok bit yang menentukan nol atau beberapa nilai yang tercantum dalam tabel berikut ini.
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 dibersihkan ke log sebelum crash akan secara otomatis dibatalkan selama pemulihan crash selama panggilan berikutnya ke fungsi JetInit . Jika JET_bitWaitLastLevel0Commit atau JET_bitWaitAllLevel0Commit ditentukan, opsi ini diabaikan. Jika panggilan ke JetCommitTransaction2 ini tidak cocok dengan panggilan pertama ke fungsi 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 diterapkan pada disk. |
JET_bitWaitAllLevel0Commit |
Semua transaksi yang sebelumnya dilakukan oleh sesi apa pun yang belum dibersihkan ke file log transaksi akan segera dibersihkan. API ini akan menunggu hingga transaksi dibersihkan 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 tersedia dalam versi sistem operasi Windows Server yang dimulai dengan Windows Server 2003. |
JET_bitWaitLastLevel0Commit |
Jika sesi sebelumnya telah melakukan transaksi apa pun dan belum dibersihkan ke file log transaksi, mereka harus segera dibersihkan. API ini akan menunggu hingga transaksi dibersihkan 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. |
cmsecDurableCommit
Durasi untuk melakukan transaksi malas.
pCommitID
Commit-ID yang terkait dengan rekaman penerapan ini.
Nilai kembali
Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian yang tercantum dalam tabel berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan Extensible Storage Engine (ESE), lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.
Menampilkan kode |
Deskripsi |
---|---|
JET_errSuccess |
Operasi berhasil diselesaikan. |
JET_errClientRequestToStopJetService |
Tidak mungkin untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke fungsi 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 versi sistem operasi Windows yang dimulai dengan Windows XP. |
JET_errInvalidgrbit |
Salah satu opsi yang diminta tidak valid atau tidak diimplementasikan. Kesalahan ini akan dikembalikan oleh fungsi JetCommitTransaction2 ketika hal berikut terjadi:
|
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 versi sistem operasi Windows yang dimulai dengan Windows XP. |
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 tertentu 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 fungsi JetRollback untuk membatalkan transaksi.
Keterangan
Harus ada satu panggilan ke JetCommitTransaction2 atau JetRollback untuk mencocokkan setiap panggilan ke JetBeginTransaction untuk sesi tertentu.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien |
Membutuhkan Windows 8. |
Server |
Memerlukan Windows Server 2012. |
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