共用方式為


JetCreateIndex3 函式

適用于: Windows |Windows Server

JetCreateIndex3 函式

JetCreateIndex3函式會在 ESE 資料庫中建立資料的索引,可用來快速找出特定資料。

Windows 7:JetCreateIndex3 是在 Windows 7 作業系統中引進。

    JET_ERR JET_API JetCreateIndex3(
      __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 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤錯誤處理參數

傳回碼

Description

JET_errSuccess

作業已成功完成。

JET_errCannotIndex

嘗試對 escrow-update 或 SLV 資料行編制索引 (請注意,SLV 資料行已被取代) 。

JET_errColumnNotFound

嘗試對不存在的資料行編制索引。 嘗試有條件地對不存在的資料行編制索引,也會產生此錯誤。

JET_errDensityInvalid

如果JET_INDEXCREATE2結構的ulDensity成員設定為小於 20 或大於 100 的數位,就會傳回此錯誤。

JET_errIndexDuplicate

嘗試定義兩個相同的索引。

JET_errIndexHasPrimary

嘗試指定一個以上的資料表主要索引。 資料表必須只有一個主要索引。 如果未指定主要索引,資料庫引擎會以透明方式建立一個。

JET_errIndexInvalidDef

指定了不正確索引定義。 以下是收到此錯誤的一些可能原因:

  • 主要索引是條件式 (JET_INDEXCREATE2的 grbit成員已設定JET_bitIndexPrimary,而 JET_INDEXCREATE2 的cConditionalColumn成員大於零) 。

  • Windows Server 2003 和更新版本的 Windows。 嘗試使用 Tuple 限制建立 Tuple 索引,但未在 ptuplelimits 成員中傳遞 JET_INDEXCREATE2 (也就是 grbit 已設定JET_bitIndexTupleLimits,但 ptuplelimits 指標為 Null) 。

  • 傳入JET_INDEXCREATE2結構的szKey成員中不正確金鑰定義。 如需有效定義的討論 ,請參閱JET_INDEXCREATE2

  • JET_INDEXCREATE2中的cbVarSegMac成員設定為大於主要索引) 或大於次要索引) JET_cbSecondaryKeyMost (JET_cbPrimaryKeyMost (。

  • 傳遞使用者定義 Unicode 索引的無效組合, (在 JET_INDEXCREATE2) 的 grbit 成員中設定 JET_bitIndexUnicode 位。 某些常見原因是 JET_INDEXCREATE2 結構的 pidxunicode 欄位為 Null,或 pidxunicode 結構中指定的 LCID 無效。

  • 指定主要索引的多值資料行。

  • 嘗試編制太多條件式資料行的索引。 JET_INDEXCREATE2結構的cConditionalColumn成員不能大於 JET_ccolKeyMost。

JET_errIndexTuplesInvalidLimits

Windows XP 和更新版本的 Windows。 已指定 JET_TUPLELIMITS 結構,且不支援其限制。 請參閱 JET_TUPLELIMITS 結構的備註一節。

JET_errIndexTuplesNonUniqueOnly

Windows XP 和更新版本的 Windows。 元組索引不能是唯一的 (grbit 不能同時設定JET_bitIndexTuples和JET_bitIndexUnique) 。

JET_errIndexTuplesOneColumnOnly

Windows XP 和更新版本的 Windows。 Tuple 索引只能超過單一資料行 (,也就是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。 Tuple 索引只能位於文字或 Unicode 資料行上。 例如,嘗試索引其他資料行 (,二進位資料行) 會導致JET_errIndexTuplesTextColumnsOnly。

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP 和更新版本的 Windows。 Tuple 索引不允許設定JET_INDEXCREATE2結構的cbVarSegMac成員。

JET_errInTransaction

嘗試在交易中建立索引時沒有版本資訊。

JET_errInvalidgrbit

索引定義無效,因為JET_INDEXCREATE2結構的grbit成員包含不一致的值。 以下是一些可能的原因:

  • 主要索引具有指定忽略位的位, (JET_bitIndexPrimary傳遞其中一個JET_bitIndexIgnoreNull、JET_bitIndexIgnoreAnyNull或JET_bitIndexIgnoreFirstNull) 。

  • 空的索引不會忽略任何 NULL 欄位 (,也就是JET_INDEXCREATE2結構的grbit成員已設定JET_bitIndexEmpty,但沒有JET_bitIndexIgnoreAnyNull設定) 。

  • 傳入具有無效grbit成員的JET_CONDITIONALCOLUMN結構。 請參閱 JET_CONDITIONALCOLUMN

一次建立數個索引 (也就是說,如果 cIndexCreate 參數大於一) ,任何索引都可能包含下列任何位:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

JET_UNICODEINDEX結構中的lcid 成員傳入不正確地區設定識別碼 ( (LCID) ,JET_UNICODEINDEX 結構中的lcid成員,JET_INDEXCREATE2 結構中的pidxunicode成員包含指標,或透過JET_INDEXCREATE2結構的lcid成員) 。

JET_errInvalidName

指定了不正確索引名稱。 如需詳細資訊 ,請參閱JET_INDEXCREATE2

JET_errInvalidParameter

不正確參數已傳遞至 API。 以下是可能會傳回此錯誤的一些原因:

JET_errUnicodeTranslationFail

嘗試正規化 Unicode 資料行時發生錯誤。 這可能是因為系統資源不足所造成。

JET_errSpaceHintsInvalid

JET 空間提示結構的元素不正確或可採取動作。

備註

傳回值會在指定的所有索引成功完成時JET_errSuccess。

JetCreateIndex3 會逐一查看 pindexcreate中指定的索引,有時會在第一次失敗時中止。 即使JET_INDEXCREATE2結構的 err 成員包含 JET_errSuccess ,但第一個索引之後的任何索引都可能不會嘗試發生錯誤。

規格需求

需求

用戶端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

Server

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

標頭

在 Esent.h 中宣告。

程式庫

使用 ESENT.lib。

Dll

需要ESENT.dll。

Unicode

實作為 JetCreateIndex3W (Unicode) 和 JetCreateIndex3A (ANSI) 。

另請參閱

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS