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:

  • Grbit ilegal ditentukan.

  • JET_bitWaitLastLevel0Commit ditentukan dalam kombinasi dengan grbit lain.

  • JET_bitWaitAllLevel0Commit ditentukan dalam kombinasi dengan grbit lain.

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