Fungsi JetGetSecondaryIndexBookmark

Berlaku untuk: Windows | Windows Server

Fungsi JetGetSecondaryIndexBookmark

Fungsi JetGetSecondaryIndexBookmark mengambil bookmark khusus untuk entri indeks sekunder pada posisi kursor saat ini. Bookmark ini kemudian dapat digunakan untuk memposisikan ulang kursor secara efisien kembali ke entri indeks yang sama menggunakan JetGotoSecondaryIndexBookmark. Ini paling berguna saat memposisikan ulang pada indeks sekunder yang berisi kunci duplikat atau yang berisi beberapa entri indeks untuk rekaman yang sama.

Windows XP: JetGetSecondaryIndexBookmark diperkenalkan di Windows XP.

    JET_ERR JET_API JetGetSecondaryIndexBookmark(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvSecondaryKey,
      __in          unsigned long cbSecondaryKeyMax,
      __out_opt     unsigned long* pcbSecondaryKeyActual,
      __out_opt      void* pvPrimaryBookmark,
      __in          unsigned long cbPrimaryBookmarkMax,
      __out_opt     unsigned long* pcbPrimaryKeyActual,
      __in          const JET_GRBIT grbit
    );

Parameter

sesid

Sesi yang digunakan untuk panggilan ini.

tableid

Kursor yang digunakan untuk panggilan ini.

pvSecondaryKey

Buffer output yang menerima kunci sekunder.

cbSecondaryKeyMax

Ukuran maksimum, dalam byte, dari buffer output untuk kunci sekunder.

pcbSecondaryKeyActual

Menerima ukuran aktual dalam byte kunci sekunder.

Jika parameter ini NULL, ukuran aktual kunci sekunder tidak akan dikembalikan.

Jika buffer output terlalu kecil, ukuran aktual kunci sekunder akan tetap dikembalikan. Itu berarti bahwa jumlah ini akan lebih besar dari ukuran buffer output.

pvPrimaryBookmark

Buffer output yang menerima bookmark kunci utama.

cbPrimaryBookmarkMax

Ukuran maksimum, dalam byte, dari buffer output untuk bookmark kunci utama.

pcbPrimaryKeyActual

Menerima ukuran aktual, dalam byte, dari marka buku kunci utama.

Jika parameter ini NULL, ukuran aktual bookmark kunci primer tidak akan dikembalikan.

Jika buffer output terlalu kecil, ukuran aktual bookmark kunci primer akan tetap dikembalikan. Itu berarti bahwa jumlah ini akan lebih besar dari ukuran buffer output.

grbit

Disiapkan untuk penggunaan masa mendatang.

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_errBufferTooSmall

Operasi berhasil diselesaikan, tetapi salah satu buffer output terlalu kecil untuk menerima data yang diminta.

Buffer output telah diisi dengan bookmark sebanyak yang sesuai. Ukuran aktual marka buku juga telah dikembalikan, jika diminta.

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_errNoCurrentIndex

Kursor saat ini tidak berada pada indeks sekunder.

Tidak bermakna untuk mengambil bookmark indeks sekunder ketika kursor saat ini tidak menggunakan indeks sekunder. JetGetBookmark harus digunakan ketika kursor tidak berada di indeks sekunder.

JET_errNoCurrentRecord

Kursor tidak diposisikan pada rekaman.

Ini dapat terjadi karena berbagai alasan. Misalnya, ini akan terjadi jika kursor saat ini diposisikan setelah rekaman terakhir pada indeks saat ini.

JET_errNotInitialized

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

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.

Jika berhasil, bookmark indeks sekunder untuk entri indeks pada posisi kursor saat ini akan dikembalikan dalam buffer output. Tidak ada perubahan pada status database yang akan terjadi.

Jika gagal, status buffer output dan ukuran aktual marka buku indeks sekunder tidak akan terdefinisi kecuali JET_errBufferTooSmall dikembalikan. Jika JET_errBufferTooSmall dikembalikan, buffer output akan berisi marka buku indeks sekunder sebanyak yang akan cocok di ruang yang disediakan dan ukuran aktual marka buku indeks sekunder akan akurat. Bagaimanapun, tidak ada perubahan pada status database yang akan terjadi.

Keterangan

Marka buku umumnya harus diperlakukan sebagai potongan data buram. Tidak ada upaya yang harus dilakukan untuk mengeksploitasi struktur internal data ini. Namun, properti berikut dapat diketahui tentang semua marka buku ESENT:

  • Bookmark secara unik mengidentifikasi rekaman dalam tabel tertentu.

  • Bookmark rekaman tidak akan berubah selama masa pakai rekaman tersebut.

  • Bookmark rekaman sama dengan kunci rekaman tersebut pada indeks utama di atas tabel yang berisi rekaman tersebut. Jika tidak ada indeks utama yang didefinisikan di atas tabel tersebut, mesin database akan membuat marka bukunya sendiri untuk rekaman.

  • Marka buku dapat dibandingkan satu sama lain menggunakan memcmp untuk menetapkan urutan relatif mereka dalam indeks utama di atas tabel rekaman sumber. Jika tidak ada indeks utama yang didefinisikan di atas tabel tersebut, pengurutan bookmark relatif dari tabel tersebut tidak bermakna.

  • Tidak ada artinya untuk membandingkan marka buku rekaman dari tabel yang berbeda satu sama lain.

  • Bookmark selalu kurang dari atau sama dengan panjang JET_cbBookmarkMost (256) byte sebelum Windows Vista. Pada Windows Vista dan rilis yang lebih baru, marka buku bisa lebih besar. Ukuran maksimum bookmark sama dengan nilai saat ini JET_paramKeyMost + 1.

Kunci umumnya harus diperlakukan sebagai potongan data buram. Tidak ada upaya yang harus dilakukan untuk mengeksploitasi struktur internal data ini. Namun, properti berikut dapat diketahui tentang semua kunci ESENT:

  • Kunci dapat dibandingkan satu sama lain menggunakan memcmp untuk menetapkan urutan relatif mereka dalam indeks asal di atas tabel entri indeks sumber.

  • Tidak ada artinya untuk membandingkan kunci entri indeks dari indeks yang berbeda satu sama lain.

  • Kunci selalu kurang dari atau sama dengan panjang JET_cbKeyMost (255) byte sebelum Windows Vista. Pada Windows Vista dan rilis yang lebih baru, kunci bisa lebih besar. Ukuran maksimum kunci sama dengan nilai JET_paramKeyMost saat ini.

Persyaratan

Persyaratan Nilai

Klien

Memerlukan Windows Vista atau Windows XP.

Server

Memerlukan Windows Server 2008 atau Windows Server 2003.

Header

Dinyatakan dalam Esent.h.

Pustaka

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Lihat juga

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetGetBookmark
JetGotoSecondaryIndexBookmark
JetRetrieveKey
memcmp