Função JetCreateIndex2

Aplica-se a: Windows | Windows Server

Função JetCreateIndex2

A função JetCreateIndex2 cria índices sobre dados em um banco de dados ESE, que podem ser usados para localizar dados específicos rapidamente.

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

Parâmetros

sesid

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

Tableid

A tabela na qual o índice será criado.

pindexcreate

Uma matriz de estruturas JET_INDEXCREATE , cada uma delas 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 seguintes códigos de retorno. Para obter mais informações sobre os possíveis erros de 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 de atualização de caução (observe que as colunas SLV foram preteridas).

JET_errColumnNotFound

Foi feita uma tentativa de indexação em uma coluna inexistente. Tentar 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_INDEXCREATE estiver definido como um número menor que 20 ou mais de 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. Alguns dos possíveis motivos para receber esse erro são:

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

  • Windows Server 2003 e posterior. Tentando criar um índice de tupla com limites de tupla, mas sem passar informações no membro ptuplelimits em JET_INDEXCREATE (ou seja, grbit tem JET_bitIndexTupleLimits definido, mas o ponteiro ptuplelimits é NULL).

  • Passando uma definição de chave inválida no membro szKey da estrutura JET_INDEXCREATE . Consulte JET_INDEXCREATE para obter uma discussão sobre definições válidas.

  • Definir o membro cbVarSegMac em JET_INDEXCREATE 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 JET_bitIndexUnicode bit definido no membro grbit de JET_INDEXCREATE). Algumas causas comuns podem ser que o campo pidxunicode da estrutura JET_INDEXCREATE seja NULL ou o LCID especificado na estrutura pidxunicode seja inválido.

  • Especificando uma coluna de vários valores para um índice primário.

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

JET_errIndexTuplesInvalidLimits

Windows XP e posterior. Uma estrutura de JET_TUPLELIMITS foi especificada e não há suporte para seus limites. Consulte a seção de comentários da estrutura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP e posterior. Um índice de tupla não pode ser exclusivo (grbit não deve ter JET_bitIndexTuples e JET_bitIndexUnique definidos).

JET_errIndexTuplesOneColumnOnly

Windows XP e posterior. Um índice de tupla só pode ser sobre uma única coluna (ou seja, o membro grbit da estrutura JET_INDEXCREATE tem JET_bitIndexTuples definido e o membro szKey da estrutura JET_INDEXCREATE especifica mais de uma coluna).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP e posterior. Um índice de tupla não pode ser um índice primário (ou seja, o membro grbit da estrutura JET_INDEXCREATE não deve ter JET_bitIndexPrimary e JET_bitIndexTuples definidos).

JET_errIndexTuplesTextColumnsOnly

Windows XP e posterior. 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

Windows XP e posterior. Um índice de tupla não permite que o membro cbVarSegMac da estrutura JET_INDEXCREATE 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_INDEXCREATE contém valores inconsistentes. Alguns motivos possíveis são:

  • 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 NULL (ou seja, o membro grbit da estrutura JET_INDEXCREATE tem JET_bitIndexEmpty definido, mas não tem JET_bitIndexIgnoreAnyNull definido).

  • Passar uma estrutura JET_CONDITIONALCOLUMN com um membro grbit inválido. Confira 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 , para a qual o membro pidxunicode na estrutura JET_INDEXCREATE contém um ponteiro ou por meio do membro lcid da estrutura JET_INDEXCREATE ).

JET_errInvalidName

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

JET_errInvalidParameter

Um parâmetro inválido foi passado para a API. Alguns dos motivos pelos quais esse erro pode ser retornado são:

JET_errUnicodeTranslationFail

Ocorreu um erro ao tentar normalizar uma coluna Unicode. Isso pode ser causado pela esgotamento dos recursos do sistema.

Comentários

O valor retornado é JET_errSuccess após a conclusão bem-sucedida de todos os índices especificados.

JetCreateIndex2 itera pelos índices fornecidos em pindexcreate e, às vezes, será anulado 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_INDEXCREATE contenha JET_errSuccess.

Requisitos

Requisito Valor

Cliente

Requer Windows Vista, Windows XP ou Windows 2000 Professional.

Servidor

Requer o Windows Server 2008, o Windows Server 2003 ou o Windows 2000 Server.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Unicode

Implementado como JetCreateIndex2W (Unicode) e JetCreateIndex2A (ANSI).

Consulte Também

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2