Fungsi JetSetSessionContext
Berlaku untuk: Windows | Windows Server
Fungsi JetSetSessionContext
Fungsi JetSetSessionContext mengaitkan sesi dengan utas saat ini menggunakan handel konteks yang diberikan. Asosiasi ini mengambil alih persyaratan mesin default bahwa transaksi untuk sesi tertentu harus terjadi sepenuhnya pada utas yang sama.
JET_ERR JET_API JetSetSessionContext(
__in JET_SESID sesid,
__in JET_API_PTR ulContext
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
ulContext
Pengidentifikasi unik yang akan dikaitkan dengan sesi ini.
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 |
Operasi tidak dapat diselesaikan karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService. |
JET_errInstanceUnavailable |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Windows XP: Nilai yang dikembalikan ini diperkenalkan di Windows XP. |
JET_errInvalidParameter |
Salah satu parameter yang disediakan berisi nilai yang tidak terduga, atau kombinasi beberapa nilai parameter menghasilkan hasil yang tidak terduga. Kesalahan ini akan dikembalikan oleh JetSetSessionContext dalam kondisi berikut:
|
JET_errNotInitialized |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errRestoreInProgress |
Operasi tidak dapat diselesaikan karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errSessionContextAlreadySet |
Sesi tidak dapat dikaitkan dengan utas saat ini karena telah dikaitkan dengan utas. |
JET_errTermInProgress |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi sedang dimatikan. |
Jika fungsi ini berhasil, sesi akan dikaitkan dengan utas saat ini. Tidak ada perubahan pada status database yang akan terjadi.
Jika fungsi ini gagal, status sesi akan tetap tidak berubah. Tidak ada perubahan pada status database yang akan terjadi.
Keterangan
Sesi biasanya terikat ke utas tertentu selama durasi transaksi. Perilaku ini dirancang untuk membantu aplikasi mendeteksi dan mencegah pembagian yang tidak disarankan secara konseptual dari satu sesi di antara beberapa utas. Terkadang, pemeriksaan sederhana ini tidak berfungsi dengan arsitektur aplikasi. Misalnya, jika aplikasi menghosting objek sisi server menggunakan kumpulan utas dan transaksi mencakup beberapa panggilan server ke objek tertentu maka perlindungan ini dapat menyebabkan beberapa panggilan tersebut gagal dengan JET_errSessionSharingViolation meskipun pola penggunaannya benar. Situasi ini umum untuk server objek COM.
JetSetSessionContext dan JetResetSessionContext menyelesaikan masalah ini dengan membuat pemeriksaan berbagi sesi ini sedikit lebih fleksibel. Ketika aplikasi mulai melakukan serangkaian panggilan ESE API menggunakan sesi tertentu, aplikasi pertama-tama mengatur konteks sesi ke nilai tertentu. Tindakan ini mengaitkan sesi ke utas panggilan. Dalam contoh yang diberikan, konteks ini bisa menjadi alamat objek yang berisi handel sesi JET. Setelah panggilan ESE API dilakukan, aplikasi mengatur ulang konteks sesi. Tindakan ini memisahkan sesi dari utas panggilan. Objek dan sesinya kemudian dapat digunakan oleh utas lain meskipun sesi memiliki transaksi aktif.
Penting untuk dicatat bahwa JetSetSessionContext harus dipanggil sebelum membuka transaksi pada sesi tersebut atau asosiasi tidak akan berfungsi.
JetSetSessionContext aman untuk utas. Beberapa utas dapat mencoba mengatur konteks utas pada sesi yang sama pada saat yang sama dan hanya satu yang akan menang. Fakta ini dapat digunakan oleh aplikasi sebagai sarana untuk mengalokasikan sesi dari kumpulan tanpa menyimpan status eksternal tentang alokasinya.
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_API_PTR
JET_ERR
JetResetSessionContext
JET_SESID
JetStopService
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