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:

  • ulContext adalah NULL

  • ulContext adalah -1

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