Fungsi JetGetLock

Berlaku untuk: Windows | Windows Server

Fungsi JetGetLock

Fungsi JetGetLock menyediakan sarana untuk secara eksplisit memesan kemampuan untuk memperbarui baris, kunci tulis, atau untuk secara eksplisit mencegah baris diperbarui oleh sesi lain, kunci baca. Biasanya, kunci tulis baris diperoleh secara implisit sebagai akibat dari memperbarui baris. Kunci baca biasanya tidak diperlukan karena penerapan versi rekaman. Namun, dalam beberapa kasus, transaksi mungkin ingin secara eksplisit mengunci baris untuk memberlakukan serialisasi, atau untuk memastikan bahwa operasi berikutnya akan berhasil dengan kebajikan bahwa kunci yang diperlukan telah diambil.

JET_ERR JET_API JetGetLock(
  __in          JET_SESID sesid,
  __in          JET_TABLEID tableid,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Sesi yang akan digunakan untuk panggilan ini.

tableid

Kursor yang akan digunakan untuk panggilan ini.

grbit

Sekelompok bit yang berisi opsi yang akan digunakan untuk panggilan ini, yang mencakup nol atau beberapa hal berikut:

Nilai

Makna

JET_bitReadLock

Bendera ini menyebabkan kunci baca diperoleh pada rekaman saat ini. Kunci baca tidak kompatibel dengan kunci tulis yang sudah dipegang oleh sesi lain tetapi kompatibel dengan kunci baca yang dipegang oleh sesi lain.

JET_bitWriteLock

Bendera ini menyebabkan kunci tulis diperoleh pada rekaman saat ini. Kunci tulis tidak kompatibel dengan kunci tulis atau baca yang dipegang oleh sesi lain tetapi kompatibel dengan kunci baca yang dipegang oleh sesi yang sama.

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

Grbit yang diberikan tidak JET_bitReadLock atau JET_bitWriteLock. Ini harus menjadi salah satu dari dua bendera ini.

JET_errNoCurrentRecord

Kursor harus ada di rekaman untuk memperoleh kunci. Kunci selalu ada di catatan.

JET_errNotInitialized

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi.

JET_errNotInTransaction

Kunci hanya dapat diperoleh oleh sesi dalam transaksi.

JET_errPermissionDenied

Kursor tidak dapat dibaca saja dan memperoleh kunci tulis.

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.

JET_errTransReadOnly

Sesi harus memiliki izin tulis untuk memperoleh kunci tulis.

JET_errWriteConflict

Kesalahan ditampilkan ketika kunci yang bertentangan diminta.

Jika berhasil, sesi telah memperoleh kunci yang diminta.

Jika gagal, sesi belum memperoleh kunci yang diminta.

Keterangan

Kunci tulis tidak dapat diperoleh dengan sesi atau kursor yang memiliki izin baca-saja, meskipun sesi dan kursor pada akhirnya tidak melakukan operasi pembaruan. Sesi dan kursor harus memiliki hak tulis untuk memperoleh kunci tulis.

Kunci baca dan tulis adalah sarana penguncian pesimis. Penguncian pesimis mengharapkan beberapa sesi bersamaan untuk berkonflik dan memperoleh kunci terlebih dahulu untuk memastikan bahwa operasi mereka berhasil.

Sebagian besar operasi akan dapat diserialisasikan berdasarkan kebajikan kunci yang diambil secara implisit. Namun, beberapa operasi tidak akan. Untuk mengilustrasikan ini, pertimbangkan dua transaksi,

T1 : R(A), U(B)

T2 : R(B), U(A)

Penerapan versi tingkat rekaman akan memastikan bahwa setiap transaksi saat dijalankan secara bersamaan akan melihat nilai asli untuk A dan B. Tidak ada urutan eksekusi serial yang dapat menghasilkan hasil yang sama untuk A dan B jika hasilnya tergantung pada data yang dibaca. Agar aplikasi dapat membuat transaksi ini dapat diserialisasikan, aplikasi harus memperoleh kunci baca eksplisit pada A dan B di setiap transaksi ketika nilai dibaca.

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_SESID
JET_TABLEID
JetPrepareUpdate
JetStopService
JetUpdate