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
);
parameters
sesid
用于 API 调用的数据库会话上下文。
tableid
要在其中创建索引的表。
pindexcreate
JET_INDEXCREATE2结构的数组,其中每个结构都定义要创建的索引。
cIndexCreate
pindexcreate 数组中的元素数。
返回值
此函数使用下表中列出的返回代码之一返回 JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errCannotIndex |
尝试对托管更新列或 SLV 列编制索引 (请注意,SLV 列已弃用) 。 |
JET_errColumnNotFound |
尝试对不存在的列编制索引。 尝试对不存在的列进行条件索引也可能产生此错误。 |
JET_errDensityInvalid |
如果将 JET_INDEXCREATE2 结构的 ulDensity 成员设置为小于 20 或大于 100 的数字,将返回此错误。 |
JET_errIndexDuplicate |
尝试定义两个相同的索引。 |
JET_errIndexHasPrimary |
尝试为表指定多个主索引。 一个表必须恰好有一个主索引。 如果未指定主索引,数据库引擎将以透明方式创建主索引。 |
JET_errIndexInvalidDef |
指定的索引定义无效。 下面是导致此错误的一些可能原因:
|
JET_errIndexTuplesInvalidLimits |
适用于从 Windows XP 开始的 Windows 版本。 指定了 JET_TUPLELIMITS 结构,不支持其限制。 有关详细信息,请参阅 JET_TUPLELIMITS 结构的备注部分。 |
JET_errIndexTuplesNonUniqueOnly |
适用于从 Windows XP 开始的 Windows 版本。 元组索引不能是唯一的, (grbit 不能同时设置 JET_bitIndexTuples 和 JET_bitIndexUnique) 。 |
JET_errIndexTuplesOneColumnOnly |
适用于从 Windows XP 开始的 Windows 版本。 元组索引只能位于单个列 (即,JET_INDEXCREATE2 结构的 grbit 成员已设置JET_bitIndexTuples,JET_INDEXCREATE2 结构的 szKey 成员指定多个列) 。 |
JET_errIndexTuplesSecondaryIndexOnly |
适用于从 Windows XP 开始的 Windows 版本。 元组索引不能是主索引 (也就是说,JET_INDEXCREATE2 结构的 grbit 成员不能同时设置JET_bitIndexPrimary和JET_bitIndexTuples) 。 |
JET_errIndexTuplesTextColumnsOnly |
适用于从 Windows XP 开始的 Windows 版本。 元组索引只能位于文本或 Unicode 列上。 尝试为其他列编制索引 (例如,) 二进制列将导致 JET_errIndexTuplesTextColumnsOnly。 |
JET_errIndexTuplesVarSegMacNotAllowed |
适用于从 Windows XP 开始的 Windows 版本。 元组索引不允许设置 JET_INDEXCREATE2 结构的 cbVarSegMac 成员。 |
JET_errInTransaction |
尝试在事务中创建没有版本信息的索引。 |
JET_errInvalidgrbit |
索引定义无效,因为JET_INDEXCREATE2结构的 grbit 成员包含不一致的值。 下面是一些可能的原因:
(一次创建多个索引时,如果 cIndexCreate 参数大于一个) ,则任何索引都不能包含以下任何位:
|
JET_errInvalidLanguageId |
LCID) (无效的区域设置 ID 通过 (JET_UNICODEINDEX 结构中的 lcid 成员(JET_INDEXCREATE2 结构中的 pidxunicode 成员包含指向的指针)或JET_INDEXCREATE2结构的lcid 成员) 传入。 |
JET_errInvalidName |
指定的索引名称无效。 有关更多详细信息 ,请参阅JET_INDEXCREATE2 。 |
JET_errInvalidParameter |
将无效参数传递到 API 中。 下面是可能返回此错误的一些原因:
|
JET_errUnicodeTranslationFail |
尝试规范化 Unicode 列时出错。 这可能是由系统资源用完导致的。 |
JET_errSpaceHintsInvalid |
JET 空间提示结构的元素不正确或不可操作。 |
备注
JetCreateIndex4W 函数循环访问 pindexcreate 参数中给定的索引,并且有时会在第一次失败时中止。 即使JET_INDEXCREATE2结构的错误成员包含JET_errSuccess,第一个索引后的任何索引也可能不会尝试。
要求
要求 | 值 |
---|---|
客户端 |
需要Windows 8。 |
服务器 |
需要Windows Server 2012。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
另请参阅
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS