Bagikan melalui


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:

  • 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 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