Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 4 Atual »

 

 

 

 

Ocorrência

Esta ocorrência indica um estouro do limite de balanceamento do índice atualmente utilizado em uma tabela, reproduzido quando utilizado o driver ADS. Esta ocorrência apresenta-se no log do console do Servidor de Aplicação, precedendo uma ocorrência fatal do AdvPL, normalmente relacionada às funções DBAppend(), DBRUnlock() e/ou DBSkip().

ADS Error (7022) - Operacao: <x> - Maximum index levels exceeded. File: <y>

Causa

Esta ocorrência é reproduzida quando da utilização de uma tabela indexada, onde foi usada uma expressão de indexação cujo resultado da chave ( &(Indexkey()) ) ultrapasse 140 carascteres, onde houve uma sequencia grande de inserções consecutivas.

Correção

  • Verifique as chaves de índice utilizadas para a tabela, e garanta que nenhuma chave seja maior que 140 caracteres.
  • Caso não seja possível reduzir a chave do índice, verifique se é possível criar o índice após os dados já estarem inseridos na tabela.
  • Ou, troque a RDD de acesso a tabela. Ao invés de cria a tabela usando driver ADS ( DBFCDX com ADS Local ou DBFCDXADS ), use o driver CTREECDX, onde os índices não têm esta limitação de balanceamento com chaves maiores que 140 bytes.
  • Caso nenhuma das alternativas anteriores seja viável, o programa pode ser alterado para, preventivamente, recriar o índice a cada X mil registros inseridos. Este número X deve ser estabelecido como um limite preventivo, para fechar, deletar e recriar o índice, por exemplo a cada 5 mil registros inseridos. Dependendo do tamanho da chave do índice ou da sequência de dados inseridos, este número pode ser menor, e deve ser determinado empiricamente.
  • Sem rótulos