Compartilhar via


Função JetCreateIndex4W

Aplica-se a: Windows | Windows Server

A função JetCreateIndex4W cria índices sobre dados em um banco de dados do Mecanismo de Armazenamento Extensível (ESE), que pode ser usado para localizar dados específicos rapidamente.

A função JetCreateIndex4W foi introduzida no sistema operacional Windows 8.

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

Parâmetros

sesid

O contexto de sessão de banco de dados a ser usado para a chamada à API.

Tableid

A tabela na qual o índice será criado.

pindexcreate

Uma matriz de estruturas de JET_INDEXCREATE2 , cada uma das quais define um índice a ser criado.

cIndexCreate

O número de elementos na matriz pindexcreate .

Valor retornado

Essa função retorna o tipo de dados JET_ERR com um dos códigos de retorno listados na tabela a seguir. Para obter mais informações sobre os possíveis erros do ESE, consulte Erros extensíveis do mecanismo de armazenamento e parâmetros de tratamento de erros.

Código de retorno

Descrição

JET_errSuccess

A operação foi concluída com sucesso.

JET_errCannotIndex

Foi feita uma tentativa de indexar em uma coluna SLV ou atualização de escrow (observe que as colunas SLV foram preteridas).

JET_errColumnNotFound

Foi feita uma tentativa de indexação em uma coluna inexistente. Uma tentativa de indexar condicionalmente em uma coluna inexistente também pode produzir esse erro.

JET_errDensityInvalid

Esse erro será retornado se o membro ulDensity da estrutura JET_INDEXCREATE2 estiver definido como um número menor que 20 ou maior que 100.

JET_errIndexDuplicate

Foi feita uma tentativa de definir dois índices idênticos.

JET_errIndexHasPrimary

Foi feita uma tentativa de especificar mais de um índice primário para uma tabela. Uma tabela deve ter exatamente um índice primário. Se nenhum índice primário for especificado, o mecanismo de banco de dados criará um de forma transparente.

JET_errIndexInvalidDef

Uma definição de índice inválida foi especificada. Veja a seguir alguns possíveis motivos para esse erro:

  • Um índice primário é condicional (o membro grbit de JET_INDEXCREATE2 tem JET_bitIndexPrimary definido e o membro cConditionalColumn de JET_INDEXCREATE2 é maior que zero).

  • Aplica-se a versões do Windows a partir do Windows Server 2003. Foi feita uma tentativa de criar um índice de tupla com limites de tupla, mas sem passar informações no membro ptuplelimits em JET_INDEXCREATE2 (ou seja, grbit tem JET_bitIndexTupleLimits definido, mas o ponteiro ptuplelimits é nulo).

  • Passando uma definição de chave inválida no membro szKey da estrutura JET_INDEXCREATE2 . Para obter informações sobre definições válidas, consulte JET_INDEXCREATE2.

  • Definir o membro cbVarSegMac em JET_INDEXCREATE2 ser maior que JET_cbPrimaryKeyMost (para um índice primário) ou maior que JET_cbSecondaryKeyMost (para um índice secundário).

  • Passando uma combinação inválida para um índice Unicode definido pelo usuário (um que tem o bit JET_bitIndexUnicode definido no membro grbit de JET_INDEXCREATE2). Algumas causas comuns podem ser que o campo pidxunicode da estrutura JET_INDEXCREATE2 seja nulo ou o LCID especificado na estrutura pidxunicode seja inválido.

  • Especificando uma coluna multivalor para um índice primário.

  • Tentando indexar muitas colunas condicionais. O membro cConditionalColumn da estrutura JET_INDEXCREATE2 não deve ser maior que JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Aplica-se a versões do Windows começando com o Windows XP. Uma estrutura JET_TUPLELIMITS foi especificada e não há suporte para seus limites. Para obter mais informações, consulte a seção comentários da estrutura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Aplica-se a versões do Windows começando com o Windows XP. Um índice de tupla não pode ser exclusivo (grbit não deve ter JET_bitIndexTuples e JET_bitIndexUnique definidos).

JET_errIndexTuplesOneColumnOnly

Aplica-se a versões do Windows começando com o Windows XP. Um índice de tupla só pode ser sobre uma única coluna (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 tem JET_bitIndexTuples conjunto e o membro szKey da estrutura JET_INDEXCREATE2 especifica mais de uma coluna).

JET_errIndexTuplesSecondaryIndexOnly

Aplica-se a versões do Windows começando com o Windows XP. Um índice de tupla não pode ser um índice primário (ou seja, o membro grbit da estrutura JET_INDEXCREATE2 não deve ter JET_bitIndexPrimary e JET_bitIndexTuples definidos).

JET_errIndexTuplesTextColumnsOnly

Aplica-se a versões do Windows começando com o Windows XP. Um índice de tupla só pode estar em um texto ou coluna Unicode. Uma tentativa de indexar outras colunas (por exemplo, colunas binárias) resultará em JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Aplica-se a versões do Windows começando com o Windows XP. Um índice de tupla não permite que o membro cbVarSegMac da estrutura JET_INDEXCREATE2 seja definido.

JET_errInTransaction

Foi feita uma tentativa de criar um índice sem informações de versão durante uma transação.

JET_errInvalidgrbit

A definição de índice é inválida porque o membro grbit da estrutura JET_INDEXCREATE2 contém valores inconsistentes. Veja a seguir alguns possíveis motivos:

  • Um índice primário tinha um bit de ignorar especificado (JET_bitIndexPrimary foi passado com um dos JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull ou JET_bitIndexIgnoreFirstNull).

  • Um índice vazio não ignora campos nulos (ou seja, o membro grbit da estrutura JET_INDEXCREATE2tem JET_bitIndexEmpty definido, mas não tem JET_bitIndexIgnoreAnyNull definido).

  • Passar uma estrutura JET_CONDITIONALCOLUMN com um membro grbit inválido. Consulte JET_CONDITIONALCOLUMN.

Ao criar vários índices ao mesmo tempo (ou seja, se o parâmetro cIndexCreate for maior que um), nenhum dos índices poderá conter nenhum dos seguintes bits:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

Uma LCID (ID de Localidade) inválida foi passada (por meio do membro lcid na estrutura JET_UNICODEINDEX , à qual o membro pidxunicode na estrutura JET_INDEXCREATE2 contém um ponteiro para ou por meio do membro lcid da estrutura JET_INDEXCREATE2 ).

JET_errInvalidName

Um nome de índice inválido foi especificado. Consulte JET_INDEXCREATE2 para obter mais detalhes.

JET_errInvalidParameter

Um parâmetro inválido foi passado para a API. Veja a seguir alguns motivos pelos quais esse erro pode ser retornado:

  • O campo cbKey de uma estrutura JET_INDEXCREATE2 é definido como zero.

  • O membro cbStruct de uma estrutura de JET_INDEXCREATE2 não está definido como sizeof(JET_INDEXCREATE2).

JET_errUnicodeTranslationFail

Ocorreu um erro ao tentar normalizar uma coluna Unicode. Isso pode ser causado por ficar sem recursos do sistema.

JET_errSpaceHintsInvalid

Um elemento da estrutura de dicas de espaço JET não estava correto ou acionável.

Comentários

A função JetCreateIndex4W itera por meio dos índices fornecidos no parâmetro pindexcreate e, às vezes, será anulada na primeira falha. Quaisquer índices após o primeiro índice com um erro podem não ter sido tentados, mesmo que o membro err da estrutura JET_INDEXCREATE2 contenha JET_errSuccess.

Requisitos

Requisito Valor

Cliente

Requer Windows 8.

Servidor

Requer Windows Server 2012.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Confira também

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS