Compartilhar via


Função JetCreateTable

Aplica-se a: Windows | Windows Server

Função JetCreateTable

A função JetCreateTable cria uma tabela vazia em um banco de dados ESE.

    JET_ERR JET_API JetCreateTable(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in          const tchar* szTableName,
      __in          unsigned long lPages,
      __in          unsigned long lDensity,
      __out         JET_TABLEID* ptableid
    );

Parâmetros

sesid

O contexto de sessão do banco de dados a ser usado.

dbid

O identificador de banco de dados a ser usado.

szTableName

O nome do índice a ser criado.

O nome deve ser formatado de acordo com as seguintes regras:

  • Seja menor que JET_cbNameMost, não incluindo o NULL de terminação.

  • Seja feito do seguinte conjunto de caracteres: 0 a 9, A a Z, a a z e todas as outras pontuações, exceto "!" (ponto de exclamação), "," (vírgula), "[" (colchete de abertura) e "]" (colchete de fechamento) — ou seja, caracteres ASCII 0x20, 0x22 por meio de 0x2d, 0x2f por meio de 0x5a, 0x5c 0x5d 0x7f.

  • Não comece com um espaço.

  • Seja feito de pelo menos um caractere que não seja de espaço.

lPages

O número inicial de páginas de banco de dados a serem alocadas para a tabela. Especificar um número maior que um poderá reduzir a fragmentação se muitas linhas forem inseridas nesta tabela.

lDensity

A densidade da tabela, em pontos percentuais. O número deve ser 0 ou no intervalo de 20 a 100. Passar 0 significa que o valor padrão deve ser usado. O padrão é 80.

Ptableid

Em caso de êxito, o identificador de tabela é retornado neste campo. O valor será indefinido se a API não retornar JET_errSuccess.

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 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_errCallbackNotResolved

A função de retorno de chamada não pôde ser resolvida. A DLL pode não ter sido encontrada ou a função na DLL pode não ter sido encontrada. Com log suficiente habilitado, o log de eventos fornecerá mais detalhes.

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_errCannotNestDDL

Se ptablecreate-grbit> especificar JET_bitTableCreateTemplateTable, mas ptablecreate-szTemplateTableName> será definido como NULL.

JET_errColumnDuplicate

Uma coluna já existe.

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_errColumnRedundant

Foi feita uma tentativa de adicionar uma coluna redundante. Não deve haver mais de uma coluna decremento automático e não mais do que uma coluna de versão por tabela.

JET_errDensityInvalid

Uma densidade inválida foi passada no membro ulDensity na estrutura JET_TABLECREATE ou JET_TABLECREATE2 .

JET_errDDLNotInheritable

Significa que a tabela nomeada no membro szTemplateTableName da estrutura JET_TABLECREATE não era marcada como uma tabela de modelo (ou seja, essa tabela não tinha JET_bitTableCreateTemplateTable definida).

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 (ou seja, o membro grbit da estrutura JET_INDEXCREATE tem JET_bitIndexPrimary conjunto e cConditionalColumn membro da estrutura JET_INDEXCREATE é maior que zero).

  • Windows Server 2003 e posterior. Tentando criar um índice de tupla com limites de tupla, mas sem passar o membro ptuplelimits na estrutura JET_INDEXCREATE (ou seja, o membro grbit da estrutura JET_INDEXCREATE 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 bit JET_bitIndexUnicode definido no membro grbit de JET_INDEXCREATE). Algumas causas comuns incluem o membro pidxunicode da estrutura JET_INDEXCREATE é NULL ou o LCID especificado na estrutura pidxunicode é inválido.

  • Especificando uma coluna com 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 JET_TUPLELIMITS foi especificada e não há suporte para seus limites. Consulte a seção comentários da estrutura JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

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

JET_errIndexTuplesOneColumnOnly

Windows XP e posterior. Um índice de tupla só pode ser sobre uma única coluna (ou seja, se o membro grbit da estrutura JET_INDEXCREATE tiver JET_bitIndexTuples definido e o membro szKey da estrutura JET_INDEXCREATE especificar 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_errIndexTuplesVarSegMacNotAllowed

Windows XP e posterior. Um índice de tupla não permite que o membro cbVarSegMac da estrutura JET_INDEXCREATE seja definido.

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 (como colunas binárias) resultará em JET_errIndexTuplesTextColumnsOnly.

JET_errInTransaction

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

JET_errInvalidCodePage

O membro cp da estrutura JET_COLUMNCREATE não foi definido como uma página de código válida. Os únicos valores válidos para colunas de texto são inglês (1252) e Unicode (1200). Um valor igual a 0 significa que o padrão será usado (inglês, 1252).

JET_errInvalidColumnType

O membro coltyp da estrutura JET_COLUMNCREATE não foi definido como um tipo de coluna válido.

JET_errInvalidCreateIndex

Alguns dos motivos pelos quais esse erro pode ocorrer:

  • O membro rgindexcreate da estrutura JET_TABLECREATE2 foi definido como NULL.

  • O membro rgcolumncreate da estrutura JET_TABLECREATE2 foi definido como NULL.

  • O membro cbStruct de uma estrutura JET_INDEXCREATE não foi definido como um valor válido.

JET_errInvalidgrbit

Uma combinação inválida de membros grbit foi especificada em JET_TABLECREATE ou JET_TABLECREATE2.

A definição de índice é inválida porque o membro grbit contém valores inconsistentes. Alguns motivos possíveis são:

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

  • Um índice vazio não ignora nenhum membro 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.

JET_errInvalidLanguageId

Uma LCID (ID de Localidade) inválida foi passada (por meio do membro lcid da estrutura JET_UNICODEINDEX que é apontada pelo membro pidxunicode na estrutura JET_INDEXCREATE ou pelo campo lcid da estrutura JET_INDEXCREATE ).

JET_errInvalidParameter

Um parâmetro inválido foi dado. Alguns motivos possíveis são:

JET_errRecordTooBig

O disco é muito grande. A soma do membro cbMax da estrutura JET_COLUMNCREATE para todas as colunas fixas não deve exceder um determinado valor.

JET_errTableDuplicate

A tabela já existe.

JET_errTooManyColumns

Foi feita uma tentativa de adicionar muitas colunas à tabela. Uma tabela não pode ter mais do que JET_ccolFixedMost colunas fixas, não mais do que JET_ccolVarMost colunas de comprimento variável e não mais do que JET_ccolTaggedMost colunas marcadas.

JET_errUnicodeTranslationFail

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

Comentários

JetCreateTable cria uma tabela que não contém colunas. Para adicionar colunas, consulte JetAddColumn.

Internamente, JetCreateTable chama JetCreateTableColumnIndex2, preenchendo uma estrutura JET_TABLECREATE2 com:

  • JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )

  • JET_TABLECREATE2.szTableName = szTableName

  • JET_TABLECREATE2.ulPages = lPage

  • JET_TABLECREATE2.ulDensity = lDensity

  • JET_TABLECREATE2.tableid = JET_tableidNil

Todos os outros campos da estrutura de JET_TABLECREATE2 interna são definidos como zero ou NULL. Na saída, ptableid será definido como JET_TABLECREATE2.tableid.

Consulte JetCreateTableColumnIndex2 para obter mais detalhes.

Assim como JetOpenTable, quando o aplicativo é feito usando o membro tableid retornado da estrutura JET_TABLECREATE2 , ele geralmente deve ser fechado com JetCloseTable.

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 JetCreateTableW (Unicode) e JetCreateTableA (ANSI).

Consulte Também

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2