Função JetOpenTempTable3

Aplica-se a: Windows | Windows Server

Função JetOpenTempTable3

A função JetOpenTempTable3 cria uma tabela temporária com um único índice que pode ser usado para armazenar e recuperar registros como uma tabela comum criada usando JetCreateTableColumnIndex. No entanto, as tabelas temporárias são muito mais rápidas do que as tabelas comuns devido à sua natureza volátil. Eles também podem ser usados para classificar e executar remoção duplicada em conjuntos de registros quando acessados de maneira puramente sequencial.

    JET_ERR JET_API JetOpenTempTable3(
      __in          JET_SESID sesid,
      __in          const JET_COLUMNDEF* prgcolumndef,
      __in          unsigned long ccolumn,
      __in_opt      JET_UNICODEINDEX* pidxunicode,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid,
      __out         JET_COLUMNID* prgcolumnid
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

prgcolumndef

Identifica as definições de coluna das colunas a serem criadas na tabela temporária.

Existem limitações importantes para as opções de definição de coluna que podem ser usadas com uma tabela temporária. Consulte a seção Comentários para obter mais informações.

Além das opções de definição de coluna usuais, zero ou mais das opções a seguir também podem ser especificadas relevantes apenas no contexto de uma tabela temporária.

Valor

Significado

JET_bitColumnTTDescending

Essa opção indica que a ordem de classificação da coluna de chave para a tabela temporária deve estar decrescente em vez de crescente. Se essa opção for especificada sem JET_bitColumnTTKey, essa opção será ignorada.

JET_bitColumnTTKey

Essa opção indica que a coluna será uma coluna de chave para a tabela temporária.

A ordem das definições de coluna com essa opção especificada na matriz de entrada determinará a precedência de cada coluna de chave para a tabela temporária. A primeira definição de coluna na matriz com esse conjunto de opções será a coluna de chave mais significativa e assim por diante. Se mais colunas de chave forem solicitadas do que o mecanismo de banco de dados, essa opção será ignorada para as colunas de chave não compatíveis.

ccolumn

Consulte prgcolumndef.

pidxunicode

A ID de localidade e os sinalizadores de normalização que serão usados para comparar quaisquer dados de coluna de chave Unicode na tabela temporária.

Quando esse parâmetro não estiver presente, o LCID padrão será usado para comparar todas as colunas de chave Unicode na tabela temporária. O LCID padrão é a localidade em inglês dos EUA.

Quando esse parâmetro não estiver presente, os sinalizadores de normalização padrão serão usados para comparar quaisquer dados de coluna de chave Unicode na tabela temporária. Os sinalizadores de normalização padrão são: NORM_IGNORECASE, NORM_IGNOREKANATYPE e NORM_IGNOREWIDTH.

grbit

Um grupo de bits que contém as opções a serem usadas para essa chamada, que incluem zero ou mais dos seguintes.

Valor

Significado

JET_bitTTErrorOnDuplicateInsertion

Essa opção solicita que qualquer tentativa de inserir um registro com a mesma chave de índice que um registro inserido anteriormente falhará imediatamente com JET_errKeyDuplicate. Se essa opção não for solicitada, uma duplicata poderá ser detectada imediatamente e falhar ou poderá ser removida silenciosamente posteriormente, dependendo da estratégia escolhida pelo mecanismo de banco de dados para implementar a tabela temporária com base na funcionalidade solicitada.

Se essa funcionalidade não for necessária, é melhor não solicitá-la. Se essa funcionalidade não for solicitada, o gerenciador de tabelas temporário poderá escolher uma estratégia para gerenciar a tabela temporária que resultará em um melhor desempenho.

JET_bitTTForceMaterialization

Essa opção força o gerente de tabela temporário a abandonar qualquer tentativa de escolher uma estratégia inteligente para gerenciar a tabela temporária que resultará em um desempenho aprimorado.

JET_bitTTForwardOnly

Essa opção solicita que a tabela temporária seja criada somente se o gerenciador de tabelas temporário puder usar a implementação otimizada para resultados de consulta intermediários. Se qualquer característica da tabela temporária impedir o uso dessa otimização, a operação falhará com JET_errCannotMaterializeForwardOnlySort.

Um efeito colateral dessa opção é permitir que a tabela temporária contenha registros com chaves de índice duplicadas. Consulte JET_bitTTUnique para obter mais informações.

Essa opção só está disponível no Windows Server 2003 e versões posteriores.

JET_bitTTIndexed

Essa opção solicita que a tabela temporária seja flexível o suficiente para permitir o uso do JetSeek para pesquisar registros por chave de índice.

Se essa funcionalidade não for necessária, é melhor não solicitá-la. Se essa funcionalidade não for solicitada, o gerenciador de tabelas temporário poderá escolher uma estratégia para gerenciar a tabela temporária que resultará em um melhor desempenho.

JET_bitTTUnique

Essa opção solicita que os registros com chaves de índice duplicadas sejam removidos do conjunto final de registros na tabela temporária.

Antes do Windows Server 2003, o mecanismo de banco de dados sempre presumia que essa opção estava em vigor devido ao fato de que todos os índices clusterizados também devem ser uma chave primária e, portanto, devem ser exclusivos. A partir do Windows Server 2003, agora é possível criar uma tabela temporária que NÃO remove duplicatas quando a opção JET_bitTTForwardOnly também é especificada.

Não é possível saber qual duplicata ganhará e quais duplicatas serão descartadas em geral. No entanto, quando a opção JET_bitTTErrorOnDuplicateInsertion for solicitada, o primeiro registro com uma determinada chave de índice a ser inserida na tabela temporária sempre ganhará.

JET_bitTTUpdatable

Essa opção solicita que a tabela temporária seja flexível o suficiente para permitir que os registros que foram inseridos anteriormente sejam alterados posteriormente. Se essa funcionalidade não for necessária, é melhor não solicitá-la.

Se essa funcionalidade não for solicitada, o gerenciador de tabelas temporário poderá escolher uma estratégia para gerenciar a tabela temporária que resultará em um melhor desempenho.

JET_bitTTScrollable

Essa opção solicita que a tabela temporária seja flexível o suficiente para permitir que os registros sejam verificados em ordem e direção arbitrárias usando JetMove.

Se essa funcionalidade não for necessária, é melhor não solicitá-la. Se essa funcionalidade não for solicitada, o gerenciador de tabelas temporário poderá escolher uma estratégia para gerenciar a tabela temporária que resultará em um melhor desempenho.

JET_bitTTSortNullsHigh

Essa opção solicita que os valores de coluna de chave NULL se classifiquem mais perto do final do índice do que os valores de coluna de chave não NULL.

JET_bitTTIntrinsicLVsOnly

Solicitações para permitir apenas valores longos intrínsecos.

Windows 7: JET_bitTTIntrinsicLVsOnly é introduzido no Windows 7.

Ptableid

O buffer de saída que receberá o novo cursor aberto na tabela temporária recém-criada.

prgcolumnid

O buffer de saída que receberá a matriz de IDs de coluna geradas durante a criação da tabela temporária.

As IDs de coluna nessa matriz corresponderão exatamente à matriz de entrada de definições de coluna. Como resultado, o tamanho desse buffer deve corresponder ao tamanho da matriz de entrada.

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_errCannotMaterializeForwardOnlySort

O JetOpenTempTable3 falhou porque JET_bitTTForwardOnly foi especificado e a tabela temporária, conforme especificado, não pôde ser criada usando a otimização somente de encaminhamento. Esse erro só será retornado pelo Windows Server 2003 e versões posteriores.

JET_errClientRequestToStopJetService

Não é possível concluir a operação porque todas as atividades na instância associada à sessão cessaram como resultado de uma chamada para JetStopService.

JET_errIndexInvalidDef

O índice não pôde ser criado porque uma definição de índice inválida foi especificada. JetOpenTempTable3 retornará esse erro quando:

  • A localidade Neutra da Linguagem é especificada.

  • Um conjunto inválido de sinalizadores de normalização é especificado.

Esse erro só será retornado pelo Windows 2000.

JET_errInstanceUnavailable

Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados. Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errInvalidCodePage

O membro cp da estrutura JET_COLUMNDEF 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 0 significa que o padrão será usado (inglês, 1252).

JET_errInvalidColumnType

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

JET_errInvalidLanguageId

Não foi possível criar o índice porque foi feita uma tentativa de usar uma ID de localidade inválida. A ID de localidade pode ser completamente inválida ou o pacote de idiomas associado pode não estar instalado.

JET_errInvalidLCMapStringFlags

Não foi possível criar o índice porque foi feita uma tentativa de usar um conjunto inválido de sinalizadores de normalização. Esse erro só será retornado pelo Windows XP e versões posteriores. No Windows 2000, sinalizadores de normalização inválidos resultarão em JET_errIndexInvalidDef.

JET_errInvalidSesid

O identificador de sessão é inválido ou se refere a uma sessão fechada. Esse erro não é retornado em todas as circunstâncias. Os identificadores são validados apenas com base no melhor esforço.

JET_errNotInitialized

Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada.

JET_errOutOfCursors

A operação falhou porque o mecanismo não pode alocar os recursos necessários para abrir um novo cursor. Os recursos de cursor são configurados usando JetSetSystemParameter com JET_paramMaxCursors.

JET_errOutOfMemory

A operação falhou porque não foi possível alocar memória suficiente para concluí-la.

JetOpenTempTable3 poderá retornar JET_errOutOfMemory se o espaço de endereço do processo de host ficar muito fragmentado. O gerenciador de tabelas temporário sempre alocará uma parte de 1 MB de espaço de endereço para cada tabela temporária criada, independentemente da quantidade de dados a serem armazenados.

JET_errRestoreInProgress

Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão.

JET_errSessionSharingViolation

A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo.

Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errTermInProgress

Não é possível concluir a operação porque a instância associada à sessão está sendo desligada.

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_errTooManyOpenIndexes

A operação falhou porque o mecanismo não pode alocar os recursos necessários para armazenar em cache os índices da tabela. O número de índices cujo esquema pode ser armazenado em cache é configurado usando JetSetSystemParameter com JET_paramMaxOpenTables.

JET_errTooManyOpenTables

A operação falhou porque o mecanismo não pode alocar os recursos necessários para armazenar em cache o esquema da tabela. O número de tabelas cujo esquema pode ser armazenado em cache é configurado usando JetSetSystemParameter com JET_paramMaxOpenTables.

JET_errTooManySorts

A operação falhou porque o mecanismo não pode alocar os recursos necessários para criar uma tabela temporária. Os recursos temporários da tabela são configurados usando JetSetSystemParameter com JET_paramMaxTemporaryTables.

Em caso de êxito, um cursor aberto na tabela temporária recém-criada será retornado. O estado do banco de dados temporário será preparado para conter a nova tabela temporária. O estado de todos os bancos de dados comuns em uso pelo mecanismo de banco de dados permanecerá inalterado.

Em caso de falha, a tabela temporária não será criada e um cursor não será retornado. O estado do banco de dados temporário pode ser alterado. O estado de todos os bancos de dados comuns em uso pelo mecanismo de banco de dados permanecerá inalterado.

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.

Consulte Também

Erros extensíveis do mecanismo de armazenamento
Parâmetros de tratamento de erro
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Parâmetros do sistema