FIREBIRD

Firebird

05/10/2009

Bom dia

tenho uma aplicação rodando em rede com firebird

estrutura

1 - Servidor com administração do sistema
2 - 4 Caixas (estações cliente)

Problema

O servidor foi desligado enquanto os caixas estavam abertos

Agora toda vez que é feito qualquer coisa no servidor trava todos os caixas.

tipo um cadatro de produto,cliente etc.

Alguem sabe como posso resolver este problema.

Obrigado


Arnaldocruz

Arnaldocruz

Curtidas 0

Respostas

Afarias

Afarias

05/10/2009

´trava´ é muito vago. Dê mais informações sobre o problema. Alguma mensagem de erro.

Por enquanto o q eu posso dizer é: verifique se a base não foi danificada (usando o GFIX) -- caso esse seja o caso, use gfix -mend para corrigir, faça um backup e restaure.


T+


GOSTEI 0
Arnaldocruz

Arnaldocruz

05/10/2009

afarias

Não dá mensagem de erro nenhum, simplesmente o sistema para e fica no select infinitamente.

Ja passei o gfix, fiz backup etc.

porem o problema persiste, pro sistema voltar a passar pelo select da tabela cliente basta eu fechar o sistema com ctrl+alt+del vou até o servidor faço backup e restauro.

isso acontece toda vez que é feito algum tipo de inclusão no banco de dados.

o engraçado é que gaço a inclusão de um cliente, pelo gerenciador eu abro o banco e não mostra o cliente, ai dou um refresh ai o cliente aparece.

acho que é isso que faz o sistema de frente de caixa travar.


GOSTEI 0
Builder

Builder

05/10/2009

Bom, servidor desligado (sabe-se lá como, de que forma):

O que eu faria:

1) Parar servidor e fazer uma cópia física dos arquivos (backup) antes de qualquer coisa (preservando os dados originais).

2) Rodar o gfix para analizar o banco de dados, se encontrar erros, rodar novamente o gfix e depois fazer um backup e restore.

3) Erro persistindo, assumo que o problema pode ser outro, então:

3.1) Copio os arquivos de dados (passados novamente pelo gfix e backup/restore) para uma máquina de desenvolvimento e nela faço os testes.

3.2) Se testes ok, então o sistema operacional do servidor, o firebird do servidor, hardware (pó nas memórias, placa com defeito, etc.) ou algo assim está com problemas e não o seu sistema.

3.3) Testes ok e servidor ok. Bom, foi feita alguma atualização do servidor e/ou estações ? (pode ser problema de versões diferentes de dlls)

3.4) Testes não ok, pode ser sua aplicação (uma alteração simples feita) e atualizada no cliente. Se não foi uma atualização, sua aplicação já trabalhou com bases de dados maiores ??, pois pode ter chegado a um gargalo que causa a lentidão (abrir por exemplo as tabelas como se abria em xbase - vindo todos os registros).

Bom, faça uma reunião com sua equipe (ou euquipe), coloque no papel todas as possibilidades e vai matando elas uma a uma. Com certeza encontrará a solução. E eu ficaria grato se depois de encontrar você registra-se aqui qual foi a solução (já ficando sua dica/solução para outros que passarem pela mesma situação).


GOSTEI 0
Joaoshi

Joaoshi

05/10/2009

Somente por desencargo, já tentou instalar o FIREBIRD novamente ?


GOSTEI 0
Arnaldocruz

Arnaldocruz

05/10/2009

JÁ AMIGO

ACABEI DE FAZER TESTES

FIZ UMA ALTERAÇÃO DO VALOR DE UM PRODUTO E FUI ATÉ O FRENTE DE CAIXA E TENTEI PASSAR O PRODUTO O SISTEMA PARA NO SELECT DA TABELA PRODUTO E FICA INFINITAMENTE.

FECHEI O FRENTE DE CAIXA ABRI DE NOVO CONTINUOU COM O PROBLEMA.

FUI até o servidor, fiz um backup e uma restauração.

Abri o frente de caixa passei o produto e tudo normal sem problema.


GOSTEI 0
Afarias

Afarias

05/10/2009

Verifique as opções de transação que vc está usando. Se vc não entende cada uma das configurações como funciona, então certifique-se de usar sempre:

read_committed
rec_version
nowait

que são as configurações gerais mais tranquilas. Certifique-se ainda de sempre COMMITAR as transações o mais cedo possível.

Por exemplo, vc disse q alterou um preço, mas não disse se deu commit.


T+


GOSTEI 0
Arnaldocruz

Arnaldocruz

05/10/2009

FARIAS EU NÃO USO O BEGINTRANS, no caso eu teria que usar o committrans ou rollbacktrans se no inicio da transação eu tivesse
Begintrans ou estou errado.

uso assim

On error Goto tbl

aqui entra os Insert e os Updates


exit sub
tbl:
msgbox´ocorreu um erro e os dados não foram gravados´


GOSTEI 0
Afarias

Afarias

05/10/2009

|FARIAS EU NÃO USO O BEGINTRANS, no caso eu teria que usar o
|committrans ou rollbacktrans se no inicio da transação eu tivesse
|Begintrans ou estou errado.

Está errado. Toda ação no FB é realizada dentro de uma transação. Se vc não está *explicitamente* abrindo a transação então a biblioteca de conexão q está usando está fazendo isso para vc *implicitamente*

Controle as suas transações, geralmente não é um bom negócio deixá-las a cargo do componente de conexão. E, mais importante, leia a doc. do componente de conexão q está usando e veja quais os parâmetros de transação padrão q este usa. Tb, veja como alterá-los e certifique-se de usar os q eu postei anteriormente.


T+


GOSTEI 0
Arnaldocruz

Arnaldocruz

05/10/2009

DEPOIS de muito procurar encontrei um ou o problema

na tabela existem dis campos.

Promo e VendaAtAnt

uso o IBManager como gerenciador

em fields eles não aparcem, em ddl eles aparecem.

é como se estivessem ocultos.

ai quando o select busca estes campos eles não são encontrados..


GOSTEI 0
POSTAR