Por um decisão estratégica vamos fazer a migração do banco Progress para SQL com uso do DataServer e schema Holder. Foi passada uma ideia de que tudo funcionará sem problemas. Abordando com detalhes o assunto foi passado que deveríamos tratar os LOCK de registro de forma manual, ou seja, as nossas aplicação Progress não poderiam mais exibir aquela mensagem de "tabela em uso... " que o progress faz de forma automática. As nossas aplicações deveriam tratar os FIND ( usar o EXCLUSIVE-LOCK com NO-WAIT ). Até ai tudo bem, posso fazer essa alteração sem problema algum. Eu não entendi muito bem o motivo, alguém saberia o motivo de tratar os LOCK´s ? Eu tenho também no banco progress campos caracter que no banco tem o format x(100), mas que na verdade contem string´s com conteúdos maiores que 100 posições, como ficariam esses campos na migração para SQL ? Alguém já passou por essa situação e poderia relatar outros problemas ? Obrigado.
Eu acompanho um colega que tem o datasul12 em oracle, e ele sofre muito, principalmente com performance, pois um for each usando clausula fields não funciona. Tratando de locks, bem, isso pra quem é programador tipo macaco velho como eu, é obrigatório, é que tem gente que não coloca nada, dai o progress assume shared-lock e complica tudo, tem hora que não precisa e ele trava registro e assim vai. outra coisa que estava incomodando o meu colega, ele fez uma clausula break by por um campo que não é indice e ferrou toda a rotina dele, travou o programa. Pelo que eu percebi até o momento, não é uma boa vc usar o datasul, que usa linguagem progress, proprietaria do banco de dados com outro banco, apesar de ter as opções, na hora dele fazer atualização de pacotes é outro parto, tem que atualizar o oracle e depois o schema holder e dai se perde no meio, trabalheira danada.
Obrigado Richard, Fiquei mais preocupado ainda, pois eu uso muito o for each com a clausula fields será que no banco SQL acontece a mesma coisa ?
acredito eu, que vc tem uma camada de tradução, correto ? essa camada de tradução não entende todos os comandos progress, mesmo vc usando fields na camada progress, a camada intermediaria não entende isso e na camada sql faz um "select * from emitente where ....." e devolve tudo que acha, pelo que eu percebi é isso.
Acompanhando esse raciocínio as QUERY´s que tem a clausulas FIELDS também devem ficar mais lentas no ambiente com SQL?
sim, porque no progress com o fields, fica mais rapido porque carrega menos dados no buffer, e no modo SQL vai sempre carregar o registro completo. no progress vc faz for each .....: disp ..... end. e pronto, se mandar isso pro sql, vira um select ....., fetchrow ...... e dai devolve pro progress, é mais ou menos isso.