Fórum Probelmas com queda de Luz #214069

14/02/2004

0

Olá pessoal,

Tenho um sistema desenvolvido em delphi com paradox, que já está sendo migrado para o interbase, mas tenho um sério problema hoje de queda de luz com o paradox, pois quando as pessoas estão usando o sistema e a luz cai algumas tabelas ficam erradas ( ou perdem índices ou ficam corrompidas) no servidor de dados, o mesmo acontece quando o servidor por algum motivo trava.

Alguém tem alguma solução para este problema enquanto não migro para o interbase. Uso o BDE.

Agradeço desde já
Zico.


Zicosh3

Zicosh3

Responder

Posts

14/02/2004

Vinicius2k

Zico,

Algumas providências simples podem ajudar bastante...

1 -
dbiSaveChanges(Nome_da_tabela.Handle); 
no evento AfterPost de cada tabela... acrescente na lista de uses a unit BDE...

2 - Evite manter tabelas abertas o tempo todo (Active = True) no DataModule... abra a tabela apenas quando ela tiver que ser utilizada e feche-a logo após...

3 - Configure corretamente a BDE (contribuição do nosso amigo bacalhau) :
Cá vai o artigo na versão original Evitar indices corrompidos Estimados colegas, antes de mais obrigado pelos vossos mails e pela vossa contribuição no fórum. Descobri-o há uma semana e sinto-me muito mais rico com as vossas sugestões e, sobretudo, pelos pontos de vista com que ´atacam´ os problemas. Sobre a questão dos índices corrompidos há que dizer uma coisa: por causa deles foi parar a um psicólogo, já que tinha 40 empresas dependentes do meu trabalho (sou free lancer) e recebia 40 telefonemas por dia reportando 40 crashs nos dados de aplicações comerciais. A solução que encontrei é simples mas seria bom perceber algumas coisas antes. 1. O Borland Database Engine ---------------------------------- As tabelas Paradox são suportadas por um motor de bases de dados fornecido pela Borland, denominado Borland Database Engine (daqui para a frente BDE). É nesta aplicação que parametrizamos tudo sobre as drivers, bases de dados, lingua utilizada, parâmetros de datas, etc.. No caso das tabelas Paradox, somente alguns parametros é que são cruciais. Se as suas aplicações foram desenvolvidas em Delphi 2 ou anterior vai encontrar um BDE com um visual completamente diferente; no entanto os tais parâmetros cruciais mantêm-se lá. Após abrir o BDE a que parâmetros deveremos prestar atenção? Cá vão: Configuration -> Drivers -> Native -> Paradox - parâmetro NET DIR Configuration -> System -> INIT -> parâmetro LOCAL SHARE São estes dois parâmetros os responsáveis (ou não) pelo corrompimento de indexs. Para os enganarmos (sim, temos de os enganar) o melhor é avançar com um exemplo 2. Exemplo - tabelas Paradox num servidor acedidas por 5 clientes em simultâneo ---------------------------------------------------------------------------------------------- Vamos considerar um servidor chamado ´MEUSERVER´, com tabelas Paradox que estão em, por exemplo, C:\PARADOX\TABELAS (do ponto de vista do servidor, claro!!!). Vamos agora considerar que a pasta ´C:\PARADOX´ foi partilhada, com acesso total por parte dos 5 utilizadores (usuários no Brasil ) Se olharmos do ponto de vista de um computador cliente, as tabelas estarão em ´\\MEUSERVER\PARADOX\TABELAS´. Até aqui nada de novo. Do ponto de vista do BDE, a coisa já requer alguma destreza. O melhor é visualizar a pasta ´PARADOX´ em ´MEUSERVER´ e atribuir-lhe uma unidade lógica através do comando ´Ligar Unidade de Rede´: digamos que todos os clientes atribuíram ao caminho ´\\MEUSERVER\PARADOX´ a unidade ´F:´. Agora as tabelas não estão em ´\\MEUSERVER\PARADOX\TABELAS´, mas sim em ´F:\TABELAS´. Chegou a hora de parametrizar o BDE. 3. Como parametrizar o BDE nos clientes ----------------------------------------------- Na opção NET DIR coloque o valor ´F:\´. Na opção LOCAL SHARE escolha o valor TRUE Os clientes podem agora aceder às tabelas, e os índices corrompidos desapareceram. É óbvio que nem todos os clientes são obrigados a escolhar a drive lógica ´F:´, para ligar a unidade de rede. Só que, uma vez escolhida a letra, esta deverá ser a mesma no BDE. Os seus clientes já estão configurados. Com isto definimos o local onde o BDE irá criar as grandes caches, onde todos poderão ler, escrever e partilhar, tudo isto controlado por essa grande ferramenta da Borland. O parametro LOCAL SHARE é que é o responsável por este desempenho fabuloso! O servidor vai precisar de um pequeno truque. 4. Como parametrizar o BDE no servidor ---------------------------------------------- No meu trabalho diário, verifiquei que os problemas ocorriam quando essas tabelas eram acedidas através do computador servidor. Na realidade o problema está aí. Quando os clientes (e só os clientes) trabalhavam tudo corria bem. Mas bastava o acesso a um registo de uma tabela e estava tudo corrompido. Se eu tivesse a aceder a um registo em simultâneo com um cliente era corrupção na certa. Mas porque não colocar os parâmetros LOCAL SHARE=TRUE e NET DIR=´C:\PARADOX\´? Repare, estimado colega, é isto que a lógica ´manda´. Infelizmente o BDE é um pouco caprichoso e temos de usar o velhinho DOS para aceder às tabelas de qualquer lado da nossa rede. As soluções são: No Windows 95 e 98, edite o ficheiro ´C:\AUTOEXEC.BAT´ e acrescente a linha: ´SUBST F: C:\PARADOX´. Este comando atribui (no servidor) uma unidade lógica à pasta que foi partilhada para todos os clientes. Mais uma vez, não está obrigado a usar a letra ´F:´; no entanto, a que escolher deverá ser a mesma a utilizar no NET DIR do BDE do servidor. O parametro LOCAL SHARE também é true. Nos Windows ME, NT, 2000 e XP crie um batch file, contendo a linha anteriormente descrita e coloque no arranque da máquina ou a executar antes das suas aplicações. O que fizemos foi dizer ao BDE para aceder a ´C:\PARADOX´, não através do caminho local mas através de uma unidade qualquer. Se for através de ´C:´ é impossível. Se for através de outra letra ele é enganado e gosta!!! eheheheheheh 5. Resumindo --------------- - Em todos os BDEs da rede coloque o parametro LOCAL SHARE igual a TRUE. - Coloque o paramatero NET DIR a apontar para o MESMO LOCAL do servidor (com as unidades de rede que lhe apetecer). - O servidor é excepção: se ninguém aceder às tabelas Paradox a partir do servidor, não há problema. Caso contrário defina uma unidade de rede ´a-la-DOS´ e coloque essa letra no parametro ´NET DIR´: Espero ter ajudado. Tenho isto implementado há 3 anos nos meus clientes e os problemas de indexs corrompidos desapareceram. E o Paradox é bem robusto... Abraço do José ´bacalhau´ Viegas


Espero ter ajudado...
T+


Responder

Gostei + 0

14/02/2004

Weber

Caro colega, com o interbase isso também acontesse, porém com menor frequencia.

Não estou dizendo que o interbase é ruim, pelo contrário o interbase/firebird é na minha opnião o melhor banco de dados free.

Só estou te dizendo que se no estabelecimento do seu cliente as quedas de luz são muito frequentes sugira a ele adquirir nobreaks.


Responder

Gostei + 0

14/02/2004

Vinicius2k

Só estou te dizendo que se no estabelecimento do seu cliente as quedas de luz são muito frequentes sugira a ele adquirir nobreaks.


Totalmente correto.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar