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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk