Функция JetCreateIndex4W
Применимо к: Windows | Windows Server
Функция JetCreateIndex4W создает индексы данных в базе данных расширяемого ядра хранилища (ESE), которую можно использовать для быстрого поиска определенных данных.
Функция JetCreateIndex4W появилась в Windows 8 операционной системе.
JET_ERR JET_API JetCreateIndex4W(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_INDEXCREATE2* pindexcreate,
__in unsigned long cIndexCreate
);
Параметры
sesid
Контекст сеанса базы данных, используемый для вызова API.
tableid
Таблица, в которой будет создан индекс.
pindexcreate
Массив JET_INDEXCREATE2 структур, каждая из которых определяет создаваемый индекс.
cIndexCreate
Количество элементов в массиве pindexcreate .
Возвращаемое значение
Эта функция возвращает JET_ERR тип данных с одним из кодов возврата, перечисленных в следующей таблице. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errCannotIndex |
Предпринята попытка индексировать столбец escrow-update или SLV (обратите внимание, что столбцы SLV устарели). |
JET_errColumnNotFound |
Предпринята попытка индексировать несуществующий столбец. Попытка условно проиндексировать несуществующий столбец также может привести к этой ошибке. |
JET_errDensityInvalid |
Эта ошибка будет возвращена, если член ulDensityструктуры JET_INDEXCREATE2 имеет значение меньше 20 или больше 100. |
JET_errIndexDuplicate |
Предпринята попытка определить два идентичных индекса. |
JET_errIndexHasPrimary |
Предпринята попытка указать несколько первичных индексов для таблицы. Таблица должна иметь ровно один первичный индекс. Если первичный индекс не указан, ядро СУБД будет прозрачно создавать его. |
JET_errIndexInvalidDef |
Указано недопустимое определение индекса. Ниже приведены некоторые возможные причины этой ошибки.
|
JET_errIndexTuplesInvalidLimits |
Применяется к версиям Windows, начиная с Windows XP. Указана JET_TUPLELIMITS структура, и ее ограничения не поддерживаются. Дополнительные сведения см. в разделе примечаний структуры JET_TUPLELIMITS . |
JET_errIndexTuplesNonUniqueOnly |
Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не может быть уникальным (гбит не должен иметь JET_bitIndexTuples и JET_bitIndexUnique ). |
JET_errIndexTuplesOneColumnOnly |
Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа может находиться только над одним столбцом (то есть элемент grbitструктуры JET_INDEXCREATE2 имеет JET_bitIndexTuples задано, а элемент szKeyструктуры JET_INDEXCREATE2 указывает несколько столбцов). |
JET_errIndexTuplesSecondaryIndexOnly |
Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не может быть первичным индексом (то есть элемент grbitструктуры JET_INDEXCREATE2 не должен иметь JET_bitIndexPrimary и JET_bitIndexTuples ). |
JET_errIndexTuplesTextColumnsOnly |
Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа может находиться только в текстовом столбце или столбце Юникода. Попытка индексировать другие столбцы (например, двоичные столбцы) приведет к JET_errIndexTuplesTextColumnsOnly. |
JET_errIndexTuplesVarSegMacNotAllowed |
Применяется к версиям Windows, начиная с Windows XP. Индекс кортежа не позволяет задать элемент cbVarSegMacструктуры JET_INDEXCREATE2 . |
JET_errInTransaction |
Предпринята попытка создать индекс без сведений о версии во время транзакции. |
JET_errInvalidgrbit |
Определение индекса недопустимо, так как элемент grbitструктуры JET_INDEXCREATE2 содержит несогласованные значения. Ниже приведены некоторые возможные причины.
При одновременном создании нескольких индексов (т. е. если параметр cIndexCreate больше единицы), ни один из индексов не может содержать следующие биты:
|
JET_errInvalidLanguageId |
Был передан недопустимый код языкового стандарта (LCID) (либо через член lcid в структуре JET_UNICODEINDEX , на который элемент pidxunicode в структуре JET_INDEXCREATE2 содержит указатель, либо через член lcidструктуры JET_INDEXCREATE2 ). |
JET_errInvalidName |
Указано недопустимое имя индекса. Дополнительные сведения см. в разделе JET_INDEXCREATE2 . |
JET_errInvalidParameter |
В API передан недопустимый параметр. Ниже приведены некоторые причины, по которым эта ошибка может быть возвращена.
|
JET_errUnicodeTranslationFail |
Произошла ошибка при попытке нормализовать столбец Юникода. Это может быть вызвано отсутствием системных ресурсов. |
JET_errSpaceHintsInvalid |
Элемент структуры пространственных указаний JET не был правильным или не может быть практическим. |
Комментарии
Функция JetCreateIndex4W выполняет итерацию по индексам, указанным в параметре pindexcreate , и иногда прерывается при первом сбое. Все индексы после первого индекса с ошибкой, возможно, не были выполнены, даже если элемент errструктуры JET_INDEXCREATE2 содержит JET_errSuccess.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows 8. |
Сервер |
Требуется Windows Server 2012. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
См. также раздел
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS