Fungsi JetCreateIndex4W

Berlaku untuk: Windows | Windows Server

Fungsi JetCreateIndex4W membuat indeks melalui data dalam database Extensible Storage Engine (ESE), yang dapat digunakan untuk menemukan data tertentu dengan cepat.

Fungsi JetCreateIndex4W diperkenalkan dalam sistem operasi Windows 8.

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

Parameter

sesid

Konteks sesi database yang akan digunakan untuk panggilan API.

tableid

Tabel tempat indeks akan dibuat.

pindexcreate

Array struktur JET_INDEXCREATE2 , yang masing-masing menentukan indeks yang akan dibuat.

cIndexCreate

Jumlah elemen dalam array pindexcreate .

Menampilkan nilai

Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian yang tercantum dalam tabel 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 melalui kolom yang tidak ada. Upaya untuk 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_INDEXCREATE2 diatur ke angka kurang dari 20 atau lebih besar dari 100.

JET_errIndexDuplicate

Upaya untuk menentukan dua indeks identik dibuat.

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 secara transparan membuatnya.

JET_errIndexInvalidDef

Definisi indeks yang tidak valid ditentukan. Berikut ini adalah beberapa kemungkinan alasan untuk kesalahan ini:

  • Indeks utama bersyarat (anggota grbitJET_INDEXCREATE2 memiliki set JET_bitIndexPrimary, dan anggota JET_INDEXCREATE2 cConditionalColumn lebih besar dari nol).

  • Berlaku untuk versi Windows yang dimulai dengan Windows Server 2003. Upaya dilakukan untuk membuat indeks tuple dengan batas tuple, tetapi tanpa meneruskan informasi di anggota ptuplelimits di JET_INDEXCREATE2 (artinya, grbit telah JET_bitIndexTupleLimits ditetapkan, tetapi penunjuk ptuplelimits null).

  • Meneruskan definisi kunci yang tidak valid di anggota szKey dari struktur JET_INDEXCREATE2 . Untuk informasi tentang definisi yang valid, lihat JET_INDEXCREATE2.

  • Mengatur anggota cbVarSegMac di JET_INDEXCREATE2 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_INDEXCREATE2). Beberapa penyebab umum mungkin adalah bidang pidxunicode struktur JET_INDEXCREATE2 null, atau LCID yang ditentukan dalam struktur pidxunicode tidak valid.

  • Menentukan kolom multinila untuk indeks utama.

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

JET_errIndexTuplesInvalidLimits

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Struktur JET_TUPLELIMITS ditentukan, dan batasnya tidak didukung. Untuk informasi selengkapnya, lihat bagian keterangan dari struktur JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Indeks tuple tidak boleh unik (grbit tidak boleh memiliki JET_bitIndexTuples dan set JET_bitIndexUnique ).

JET_errIndexTuplesOneColumnOnly

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Indeks tuple hanya dapat melebihi satu kolom (yaitu, anggota grbit struktur JET_INDEXCREATE2 memiliki set JET_bitIndexTuples , dan anggota szKey dari struktur JET_INDEXCREATE2 menentukan lebih dari satu kolom).

JET_errIndexTuplesSecondaryIndexOnly

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Indeks tuple tidak dapat menjadi indeks utama (yaitu, anggota grbit struktur JET_INDEXCREATE2 tidak boleh memiliki JET_bitIndexPrimary dan JET_bitIndexTuples yang ditetapkan).

JET_errIndexTuplesTextColumnsOnly

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Indeks tuple hanya dapat berada di teks atau kolom Unicode. Upaya untuk mengindeks kolom lain (misalnya, kolom biner) akan menghasilkan JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Berlaku untuk versi Windows yang dimulai dengan Windows XP. Indeks tuple tidak mengizinkan anggota cbVarSegMac dari struktur JET_INDEXCREATE2 diatur.

JET_errInTransaction

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

JET_errInvalidgrbit

Definisi indeks tidak valid karena anggota grbit struktur JET_INDEXCREATE2 berisi nilai yang tidak konsisten. Berikut ini adalah beberapa kemungkinan alasannya:

  • 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 dari struktur JET_INDEXCREATE2 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 indeks), tidak ada indeks yang mungkin berisi salah satu bit berikut:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

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

JET_errInvalidName

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

JET_errInvalidParameter

Parameter yang tidak valid diteruskan ke API. Berikut ini adalah beberapa alasan mengapa kesalahan ini dapat dikembalikan:

JET_errUnicodeTranslationFail

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

JET_errSpaceHintsInvalid

Elemen struktur petunjuk ruang JET tidak benar atau dapat ditindakkan.

Keterangan

Fungsi JetCreateIndex4W melakukan iterasi melalui indeks yang diberikan dalam parameter pindexcreate , dan terkadang akan membatalkan kegagalan pertama. Indeks apa pun setelah indeks pertama dengan kesalahan mungkin belum dicoba, meskipun anggota err dari struktur JET_INDEXCREATE2 berisi JET_errSuccess.

Persyaratan

Persyaratan Nilai

Klien

Membutuhkan Windows 8.

Server

Memerlukan Windows Server 2012.

Header

Dinyatakan dalam Esent.h.

Pustaka

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Lihat juga

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS