1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Incluir índice sem dar erro de CRC

Discussão em 'EMS , HCM e Totvs 11' iniciado por fabianofss, Outubro 6, 2021.

  1. fabianofss

    fabianofss Membro Participativo

    Bom dia amigos,
    já deparei com situações onde criei novos índices em tabela e não precisei recompilar os programas que a usam por causa de erro de CRC.
    Assim como teve situações onde todos os programas relacionados deram erro e precisei recompilar.

    Alguém sabe me explicar em que caso consigo criar índices em uma tabela sem que gere o erro de CRC nos programas?

    Vou precisar alterar duas das tabelas mais usadas de nosso sistema :(
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Nunca fiz testes nesse sentido, mas já aconteceu o mesmo que você relatou.

    Pensando agora, eu acho que, se não mudar o índice primário e não criar nenhum índice UNIQUE já deve evitar esse problema, mas não tenho certeza absoluta, só criando uma
    rotina de teste para saber.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Meu caro, eu dei uma pesquisada no knowledgebase.progress.com e achei isso aqui ....
    Código:
    While the physical position of a field can't be controlled, the logical position can. When the definitions of a table are dumped via the Data Dictionary, there’s the option that is checked by default:
    
    'Include POSITION for .r / Binary Load Compatibility".
    
    When this option is checked, the value of _Field-rpos is dumped into the .df file and then when it is loaded back into a database, the _Field-rpos will be kept as it was and the r-code compiled will be compatible. 
    
    Activating “Include POSITION for .r / Binary Load Compatibility” option ensures that is not required to recompile .r code against any new schema that is created by loading a new *.df file, and that data dumped with PROUTIL (binary dump) can be loaded into the database.
    As vezes acontece de precisar criar campos novos em tabelas já existente, eu vou na minha base teste, implemento os campos, ai não tem jeito, vai dar erro de CRC se rodar o .r na base teste, mas ainda assim, ao criar os campos, no botão TRIGGERS ... tem a opção check CRC que vc pode desmarcar, e segundo esse texto, depois de criado o campo na base teste, eu faço um dump da tabela e aparece a opção "include POSITION for .r / Binary Load Compatibility, se eu desmarcar, posso aplicar esse df na outra base e não precisa recompilar, sei que muitos devem fazer um delta entre as bases, bem, eu sempre faço dump da tabela, edito no bloco de notas, deleto as linhas dos campos e indices que já existem, e depois eu faço o load na outra base, marcando a opção "Add new objects on-line"
    Acredito que se fizer uma "salada mista" dessas opções vc consiga desviar do CRC, mas eu acredito que ter o CRC te dá uma segurança sobre a integridade, porque um .r lendo uma tabela que vc criou um indice novo, ele ira usar esse indice ??? ou ira usar somente depois que recompilar o programa ?

    link de onde eu tirei o texto https://knowledgebase.progress.com/articles/Knowledge/20245
  4. fabianofss

    fabianofss Membro Participativo

    Também gero neste esquema de incluir campos/indices no teste,
    gero o .df
    edito o arquivo deixando apenas os novos
    e importo no produção marcando as opções "Stop If Errors Found" e "Add new objects on-line"

    Acho que vou continuar fazendo essas alterações de domingo pra recompilar os programas caso dê erro né
  5. jdchaves

    jdchaves Membro Participativo

    Para usar os indices novos, é necessário a aplicação do DF em monousuário, para ser realizado a reindexação dos mesmos. Caso aplicar Online, os próximos .r que tu compilar e estiver usando o indice novo(ñ indexado) vai dar erro pois o indice não estará ativo.
  6. fabianofss

    fabianofss Membro Participativo

    Só pra avisar quem estiver pensando em aplicar novos índices online em produção durante o expediente.

    Eu fiz isso e os índices entraram como inativos.
    Fiquei tranquilo pensando que por estarem inativos e não ter recompilado os programas não iria dar problema, mas pouco tempo depois vários programas pararam por ter um índice inativo na tabela.

    No fim do dia, sem ninguém no sistema, tive que deletar os índices e inserir novamente pois não estava permitindo somente ativa-los.
    sandrammss curtiu isso.

Compartilhe esta Página