Fungsi JetCreateIndex2

Berlaku untuk: Windows | Windows Server

Fungsi JetCreateIndex2

Fungsi JetCreateIndex2 membuat indeks atas data dalam database ESE, yang dapat digunakan untuk menemukan data tertentu dengan cepat.

    JET_ERR JET_API JetCreateIndex2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_INDEXCREATE* pindexcreate,
      __in          unsigned long cIndexCreate
    );

Parameter

sesid

Konteks sesi database yang digunakan untuk panggilan API.

tableid

Tabel tempat indeks akan dibuat.

pindexcreate

Array struktur JET_INDEXCREATE , yang masing-masing mendefinisikan indeks yang akan dibuat.

cIndexCreate

Jumlah elemen dalam array pindexcreate .

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_errCannotIndex

Upaya dilakukan untuk mengindeks melalui kolom escrow-update atau SLV (perhatikan bahwa kolom SLV tidak digunakan lagi).

JET_errColumnNotFound

Upaya dilakukan untuk mengindeks kolom yang tidak ada. Mencoba mengindeks secara kondisional melalui kolom yang tidak ada juga dapat menghasilkan kesalahan ini.

JET_errDensityInvalid

Kesalahan ini akan dikembalikan jika anggota ulDensity dari struktur JET_INDEXCREATE diatur ke angka kurang dari 20 atau lebih dari 100.

JET_errIndexDuplicate

Upaya untuk menentukan dua indeks identik dilakukan.

JET_errIndexHasPrimary

Upaya dilakukan untuk menentukan lebih dari satu indeks utama untuk tabel. Tabel harus memiliki tepat satu indeks utama. Jika tidak ada indeks utama yang ditentukan, mesin database akan membuatnya secara transparan.

JET_errIndexInvalidDef

Definisi indeks yang tidak valid ditentukan. Beberapa alasan yang mungkin untuk menerima kesalahan ini adalah:

  • Indeks utama bersyarat (anggota grbitJET_INDEXCREATE memiliki kumpulan JET_bitIndexPrimary, dan anggota JET_INDEXCREATE cConditionalColumn lebih besar dari nol).

  • Windows Server 2003 dan yang lebih baru. Mencoba membuat indeks tuple dengan batas tuple, tetapi tanpa meneruskan informasi di anggota ptuplelimits di JET_INDEXCREATE (artinya, grbit telah JET_bitIndexTupleLimits ditetapkan, tetapi pointer ptuplelimits adalah NULL).

  • Meneruskan definisi kunci yang tidak valid di anggota szKey dari struktur JET_INDEXCREATE . Lihat JET_INDEXCREATE untuk diskusi definisi yang valid.

  • Mengatur anggota cbVarSegMac di JET_INDEXCREATE menjadi lebih besar dari JET_cbPrimaryKeyMost (untuk indeks utama) atau lebih besar dari JET_cbSecondaryKeyMost (untuk indeks sekunder).

  • Meneruskan kombinasi yang tidak valid untuk indeks Unicode yang ditentukan pengguna (yang memiliki bit JET_bitIndexUnicode diatur dalam anggota grbitJET_INDEXCREATE). Beberapa penyebab umum mungkin adalah bidang pidxunicode dari struktur JET_INDEXCREATE adalah NULL, atau LCID yang ditentukan dalam struktur pidxunicode tidak valid.

  • Menentukan kolom multinilai untuk indeks utama.

  • Mencoba mengindeks terlalu banyak kolom bersyarat. Anggota cConditionalColumn dari struktur JET_INDEXCREATE tidak boleh lebih besar dari JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Windows XP dan yang lebih baru. Struktur JET_TUPLELIMITS ditentukan, dan batasnya tidak didukung. Lihat bagian keterangan dari struktur JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP dan yang lebih baru. Indeks tuple tidak boleh unik (grbit tidak boleh memiliki set JET_bitIndexTuples dan JET_bitIndexUnique).

JET_errIndexTuplesOneColumnOnly

Windows XP dan yang lebih baru. Indeks tuple hanya dapat melebihi satu kolom (yaitu, anggota grbit struktur JET_INDEXCREATE memiliki kumpulan JET_bitIndexTuples , dan anggota szKey dari struktur JET_INDEXCREATE menentukan lebih dari satu kolom).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP dan yang lebih baru. Indeks tuple tidak boleh menjadi indeks utama (yaitu, anggota grbit struktur JET_INDEXCREATE tidak boleh memiliki JET_bitIndexPrimary dan JET_bitIndexTuples yang ditetapkan).

JET_errIndexTuplesTextColumnsOnly

Windows XP dan yang lebih baru. Indeks tuple hanya dapat berada di teks atau kolom Unicode. Upaya untuk mengindeks kolom lain (misalnya, kolom biner) akan menghasilkan JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP dan yang lebih baru. Indeks tuple tidak memungkinkan anggota cbVarSegMac dari struktur JET_INDEXCREATE diatur.

JET_errInTransaction

Upaya dilakukan untuk membuat indeks tanpa informasi versi saat dalam transaksi.

JET_errInvalidgrbit

Definisi indeks tidak valid karena anggota grbit dari struktur JET_INDEXCREATE berisi nilai yang tidak konsisten. Beberapa alasan yang mungkin adalah:

  • Indeks utama memiliki bit abaikan yang ditentukan (JET_bitIndexPrimary diteruskan dengan salah satu JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull, atau JET_bitIndexIgnoreFirstNull).

  • Indeks kosong tidak mengabaikan bidang NULL apa pun (yaitu, anggota grbit struktur JET_INDEXCREATE memiliki set JET_bitIndexEmpty, tetapi tidak memiliki set JET_bitIndexIgnoreAnyNull).

  • Melewati struktur JET_CONDITIONALCOLUMN dengan anggota grbit yang tidak valid. Lihat JET_CONDITIONALCOLUMN.

Saat membuat beberapa indeks sekaligus (yaitu, jika parameter cIndexCreate lebih besar dari satu), tidak ada indeks yang mungkin berisi salah satu bit berikut:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

ID Lokal tidak valid (LCID) diteruskan (baik melalui anggota lcid dalam struktur JET_UNICODEINDEX , yang anggota pidxunicode dalam struktur JET_INDEXCREATE berisi pointer ke, atau melalui anggota lcid dari struktur JET_INDEXCREATE ).

JET_errInvalidName

Nama indeks yang tidak valid ditentukan. Lihat JET_INDEXCREATE untuk detail selengkapnya.

JET_errInvalidParameter

Parameter yang tidak valid diteruskan ke API. Beberapa alasan kesalahan ini dapat dikembalikan adalah:

JET_errUnicodeTranslationFail

Terjadi kesalahan saat mencoba menormalkan kolom Unicode. Hal ini dapat disebabkan oleh kehabisan sumber daya sistem.

Keterangan

Nilai yang dikembalikan JET_errSuccess pada keberhasilan penyelesaian semua indeks yang ditentukan.

JetCreateIndex2 melakukan iterasi melalui indeks yang diberikan dalam pindexcreate, dan terkadang akan dibatalkan pada kegagalan pertama. Indeks apa pun setelah indeks pertama dengan kesalahan mungkin belum dicoba, meskipun anggota err dari struktur JET_INDEXCREATE berisi JET_errSuccess.

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.

Unicode

Diimplementasikan sebagai JetCreateIndex2W (Unicode) dan JetCreateIndex2A (ANSI).

Lihat juga

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2