FIREBIRD
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
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
Curtidas 0
Respostas
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+
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
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.
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
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).
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
05/10/2009
Somente por desencargo, já tentou instalar o FIREBIRD novamente ?
GOSTEI 0
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.
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
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+
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
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´
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
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+
|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
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..
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