[firebase-br] Problema com Generator

Valdir Marcos valdir.marcos em ig.com.br
Seg Out 17 17:02:31 -03 2005


Tente observar em qual Windows seu FB está instalado e se seu cliente usa a 
máquina servidora do FB como estação.

Um dos meus clientes, usava a máquina dedicada ao FB como e estação, e de 
vez em quando ela travava, e era obrigado a reiniciar o micro perdendo 
informações do FB, como os números do Generators...

Se vc tiver um servidor FB dedicado, que o usuário não possa mexer ou 
reiniciar, ajuda bastante.

Veja a explicação em 
(http://br.groups.yahoo.com/group/boletim-pascal/message/16):

Desligue Async Writes
---------------------

No Windows NT, o Interbase está configurado por padrão para executar
escritas forçadas. Isso significa que as operações de escrita para o
Interbase vão direto ao banco e não passam pelo sistema de cache do
sistema operacional, normalmente lento. No Linux, o inverso ocorre.
Isso pode resultar em diferenças de performance de mais de 300% para
algumas operações.

O problema é que se você desliga Async Writes no Windows, e o sistema
operacional cai enquanto o Interbase escreve em disco, você corre o
risco de perder dados e corromper seu banco. Como Linux é naturalmente
mais estável esse não é um risco tão grande. Se você deseja desligar
Async Writes tenha certeza de manter seus backups em dia e confirme
que seu sistema de UPS no servidor está funcionando:

GFIX -WRITE ASYNC/SYNC MYDATABASE.GDB

Um abraço,

Valdir




----- Original Message ----- 
From: "Valdir Dill" <valdirdill em infolivre.com.br>
To: "Firebase Lista" <lista em firebase.com.br>
Sent: Monday, October 17, 2005 12:49 PM
Subject: [firebase-br] Problema com Generator



Tenho a seguinto função para incrementar o nr do generator:

"
function NovoCodigoGenerator : Integer;
begin
 SQLQuery.Close;
 SQLQuery.SQL.Clear;
 SQLQuery.SQL.Add('SELECT Cast(GEN_ID(MeuGenerator,1) as Integer)as VNumero 
FROM RDB$DATABASE');
 SQLQuery.Open;
 Result := SQLQuery.Fields[0].AsInteger;
 SQLQuery.Close;
end;
"
Essa função funciona bem. O problema é que, às vezes a função retorna o novo 
número do generator, mas não grava isso no banco de dados.
Por exemplo: o nr do generator atual é 48. Ao executar a função deveria 
retornar e gravar o nr 49. Na maioria das vezes é isso que acontece, ou 
seja, faz certinho, mas, às vezes, a função retorna o 49, mas no banco fica 
gravado o 48. Aí quando vou pegar executo novametne a função vai retornar 
novamente o 49.
Quando ocorre o erro não é comigo, é com usuários. Por isso não consigo 
debugar. E só acontece muito raramente.
Será que alguém tem alguma idéia do que poderia estar causando essa falha?

Obrigado.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista