Sei sulla pagina 1di 5



)HOL]FRP3DUDGR[

Muitos programadores se queixam dos problemas de corrupes de


tabelas de dados do Paradox. Realmente tabelas Paradox so muito frgeis,
especialmente quando o ambiente de execuo dos programas no esto
configurados adequadamente.
Trabalho com Delphi desde a verso 2.0 (1996). Desde muito tempo at hoje inclusive - fao uso de tabelas Paradox para armazenar dados dos
programas que desenvolvo. Por um longo perodo tive srios problemas de
corrupes de ndices e tabelas e, conseqentemente, perda de dados.
Sei perfeitamente que a migrao para um banco de dados SGDB
realmente a melhor alternativa. Inclusive j estou fazendo isto h algum
tempo, adotando o ,QWHU%DVH)LUH%LUG para sucessor do Paradox. Mas, como
no meu caso, muitos programadores ainda tm diversos programas em
produo usando tabelas Paradox como banco de dados e, como todos
sabemos, no podemos abandonar nossos clientes nestas horas to crticas.
Uma alternativa melhorar o ambiente atual e migrar gradativamente todos os
sistemas para um banco de dados mais confivel (VXJLUR)LUH%LUG). O
propsito deste artigo ajudar voc nesta tarefa, apresentando algumas dicas
que o ajudaram a evitar os principais problemas dos arquivos Paradox.

,QGH[LVRXWRIGDWH
Esta uma das mensagens que eu mais via no incio da minha histria com
Paradox. 0DVRTXHHVWDPHQVDJHPQRVGL]" Diz que a data/hora do arquivo
antiga, ou mais precisamente que o arquivo de ndice est obsoleto.
0DVSRUTXHLVWRDFRQWHFH"Normalmente isto acontece quando os
arquivos de ndices no so atualizados concomitantemente com a atualizao
da tabela. Falhas dos mais diversos tipos podem ocasionar este tipo de
problema, mas a principal causa o acesso s tabelas em rede com a
propriedade /RFDO6KDUH do %'( configurara como )$/6(.

Quando /RFDO6KDUH est )$/6(, o %'( no faz nenhum controle de


acesso concorrente, o que acarreta atualizaes simultneas sem nenhum
controle de acesso compartilhado aos dados. Como resultado teremos ndices
e tabelas com dados incoerentes, inclusive a data/hora da ltima alterao.

&RPRHYLWDURSUREOHPD" A soluo para este problema a


configurao de /RFDO6KDUH como 758( sempre que as tabelas forem
acessadas em um ambiente de rede. Siga os passos abaixo:

Abra o %'($GPLQLVWUDWRU
Abra &RQILJXUDWLRQ!6\VWHP!,1,7
No lado direito da tela altere /RFDO6KDUH para 758(.
Para salvar as configuraes acesse o menu 2EMHFW e escolha $SSO\.
Repita estes passos em todas mquinas da rede que acessam as tabelas
Paradox.

'LUHFWRU\LVFRQWUROOHGE\RWKHU1(7ILOH
Esta mensagem tambm muito comum quando no configuramos
corretamente o BDE para funcionar em rede. Quando configuramos a
propriedade Local Share para TRUE, o BDE cria arquivos para controle do
acesso concorrente aos dados. Estes arquivos, dentre outras coisas, funcionam
como um semforo, impedindo que um mesmo registro seja editado
simultaneamente por duas estaes da rede, mais precisamente por duas
sesses, mesmo que seja na mesma mquina.
2TXHFDXVDRHUUR" Se no especificarmos o local (diretrio) onde os
arquivos de controle sero criados, o BDE os criar em algum local padro.
Isto far com que cada estao da rede crie arquivos de controles em locais
distintos. Certamente o BDE inteligente o suficiente para perceber que
alguma coisa est errada e lana a mensagem de erro citada.
&RPRUHVROYHU" A soluo simples. Todas as mquinas da rede precisam
trabalhar com os mesmos arquivos de controle. Para fazer isto precisamos
configurar a propriedade 1HW'LU do %'( para fazer referncia a um mesmo
diretrio de uma mesma mquina da rede. Preferencialmente os arquivos de
controle de acesso devem ser criados num diretrio do servidor, embora,
teoricamente, qualquer outra mquina possa ser usada para armazenar tais
arquivos. Nos passos abaixo vamos considerar que no servidor exista o
diretrio F?FRQWUROH e que a unidade F est compartilhada com acesso de
leitura e escrita com o nome F e ainda que o nome da mquina servidora
VHUYLGRU.

Feche todos os programas que usam o BDE em todas as mquinas.


Abra o %'($GPLQLVWUDWRU
Abra &RQILJXUDWLRQ!'ULYHUV!1DWLYH!3DUDGR[
Do lado direito altere a propriedade 1HW'LU para ??VHUYLGRU?F?FRQWUROH
Para salvar acesse o menu 2EMHFW e clique em $SSO\.
Repita estes passos em todas as mquinas da rede.

(YLWDQGRRFDFKHGR%'(
Para melhorar o desempenho, o BDE mantm um cache de gravao. Isto
significa que os dados no so gravados fisicamente de forma imediata. Por
um lado isto bom, mas pode causar algumas dores de cabea em caso de
quedas de energia eltrica ou travamentos dos computadores. Mas como tudo
tem soluo, a API do prprio BDE possui uma funo que pode ser invocada
para salvar fisicamente os dados. Para evitar problemas esta funo deve ser
chamada sempre aps gravar ou excluir dados nas tabelas. Veja abaixo como
fazer isto.
Coloque no uses a XQLW%'(.
Nos eventos $IWHU'HOHWH e $IWHU3RVW da 77DEOH e 74XHU\, coloque o
cdigo abaixo:

'EL6DYH&KDQJHV 7DEOH+DQGOH 
ou


'EL6DYH&KDQJHV 4XHU\+DQGOH 

(YLWDQGRRFDFKHGR:LQGRZV

Assim como o BDE, o Windows tambm faz o uso de cache para acelerar o
acesso ao disco. Como tudo tem um preo, em caso de travamentos ou quedas
de energia eltrica este recurso pode causar mais problemas do que benefcios.
Para evitar que o Windows deixe os dados gravados no cache de gravao,
basta alterar algumas configuraes, conforme mostra os passos abaixo.
No :LQGRZVe, siga os passos abaixo:

Clique com o boto direito do mouse sobre o cone 0HX


&RPSXWDGRU e escolha 3URSULHGDGHV.
Abra a aba 'HVHPSHQKR e clique no boto 6LVWHPDGH$UTXLYRV.
Uma nova janela aparecer.
Na nova janela clique na aba 6ROXomRGH3UREOHPDV e marque as
seguintes opes:
o Desativar novo compartilhamento de arquivo e bloqueio de
semntica.
o Desativar ajustes de buffers sncronos.
o Desativar o cache de gravao anterior para todas as unidades.
Re-inicie o computador.

No :LQGRZV17e;3
Abra, com direitos de administrador, o regedit.exe.
Localize a chave +.(<B/2&$/B0$&+,1(?6<67(0?
&XUUHQW&RQWURO6HW?6HUYLFHV?ODQPDQ6HUYHU?3DUDPHWHUV
Adicione os dois valores do tipo DWORD abaixo:
o (QDEOH2SORFNV e configur-lo com o valor .
o &DFKHG2SHQ/LPLW e configur-lo com o valor .
Re-inicie o computador.

2TXHPDLVSRGHVHUIHLWR"
1R%UHDN

Coloque no-break em todas as mquinas da rede. Diferentemente dos bancos


de dados cliente/servidor, as tabelas Paradox so acessadas diretamente por
cada computador da rede, o que pode causar corrupo quando uma mquina
pra anormalmente, seja por travamentos ou falta de energia.
(YLWHWUDYDPHQWRV
Sabemos que ter o Windows no computador j uma boa causa de
travamentos. Como no podemos evita-lo (por enquanto!), melhor ajuda-lo a
suportar os contratempos. Para isto faa manuteno regularmente nos
equipamentos com o objetivo de resolver problemas de travamentos devido a
problemas de hardware. Super aquecimento tem sido a causa de muitos

travamentos. Coloque um cooler potente e mantenha os computadores em


locais ventilados.
8WLOLWiULR78WLO
Tenha sempre em mos o utilitrio TUtil da Borland para resolver os
eventuais problemas de corrupo de tabelas e ndices que ainda possam
acontecer. Este utilitrio repara tabelas e ndices e pode ser baixado
diretamente do site da Borland.
6HXSURJUDPDGHYHYHULILFDUDFRQILJXUDomR
Uma forma eficaz de manter a configurao correta colocar nosso programa
para fazer estas verificaes automaticamente sempre que iniciar. A
propriedade Local Share do BDE e as configuraes do Windows podem ser
facilmente verificadas, bastando acessar algumas chaves do Registro do
Windows. Meus sistemas, por exemplo, no funcionam caso Local Share do
BDE estiver FALSE. Alm disso as configuraes do Windows so alteradas
automaticamente na primeira vez que o programa aberto.

&RQFOXVmR
Com este artigo espero estar contribuindo para diminuir as dores de cabea
daqueles que no podem, por enquanto, abandonar o Paradox. No entanto
quero aproveitar para fazer uma importante recomendao: atualize seus
sistemas para usar um banco de dados cliente/servidor o mais rpido possvel.
Uma boa alternativa o )LUH%LUG, devido a simplicidade de configurao e ao
excelente desempenho.
'DQLHO3HUHLUD*XLPDUmHV
tecnobyte@ulbrajp.com.br
www.ulbrajp.com.br/~tecnobyte
Colaborador
QJHOR5LFDUGR0LTXHOLQ1HWR
angelo_mique@pop.com.br

Potrebbero piacerti anche