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