SGBD perdendo dados sozinho

Firebird

24/09/2010

Olá, bom dia!   Sou Desenv. D7 + IB/FB +   Tenho o seguitne problema: Tenho um cliente q roda um sistema de OS, o sitema está rodando já a um bom tempo. Mas de alguns dias pra cá, começou aleatóriamente (Horas, ou dias) a perder dados. Eu mesmo presenciei quando cadastrei um novo produto, depois fui fazer a venda, até ai tudo bem, não aconteceu nada. após imprimir os extratos, pesquisei num outro termina a venda, vi q a descrição do produto não saia mais, pois o produto já tinha desaparecido e o código dele estava novamente livre pra ser usado, parece q foi um tipo de ROLLBACK q o SGBD sofreu, e isto está acontecendo com mais frequencia. Já Mudei a maquina servidora, resolveu por alguns dias, mas ontem perdi 3 vendas e varios cadastros, como disse antes parece q o SGBD sofre um ROLLBACK. Já não sei mais o q fazer pois se fosse um erro no Sistemas, os outro clientes teriam reclamado tbém. Estou suspeitando de Vírus, mas q pode ser ? DEsde já agradeço qualquer ajuda pois já não sei mais o q posso fazer es estou a ponto de perder meu clientes por caisa deste transtorno q estou causando a ele.   100+   ANT.CARLOS/SP
Antonio Jesus

Antonio Jesus

Curtidas 0

Respostas

Antonio Jesus

Antonio Jesus

24/09/2010

Olá, bom dia! Estou navamente relatando q o banco de dados continua perdendo dados. Agora observei q, um cliente fez a vendas do dia, normalmente (num sabado), listou todas as vendas ao final do dia e tudo estava lá gravado. Mas na segunda (dia 18/10), pedi pra ele verificar novamente se alguma coisa tivesse acontecido, pois não é q sumiu pelo menos 10 vendas e cadastro de clientes. Já não sei + o q fazer, mas observei tbém q isto começou a acontecer depois q usei o StartTransaction. será q´poder ser um Bug do DBExpress, pois estou usando D7 + FB 2.1 + DBExpress. A quem puder responder desde já meus agradecimentos.   ANT.CARLOS/SP       ----------------------------------- Try
    Randomize;
    TD.TransactionID := Random(3600);
    TD.IsolationLevel := xilREADCOMMITTED;
    DMCN.SQLConnect.StartTransaction(TD);
   ...... procedures q gravam os registros.    ...... procedures q gravam os registros.     ...... procedures q gravam os registros.  
        Try
           If Fbxc.Tudo_ok Then
              DMCN.SQLConnect.Commit(TD)
           Else
              raise Exception.Create('ATENÇÃO!'+#13+'Aconteceu um problema               e a baixa não poderá ser gravada!');   
              except on E: Exception do Begin
                DMCN.SQLConnect.Rollback(TD);
                ShowMessage(E.message);
           End;
        end; Finally
   DMCN.SQLConnect.Connected := False;
   DMCN.SQLConnect.Connected := True; End; -----------------------------------
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/09/2010

eu, ao menos para teste, mudaria um pouco o código:

Try
    Randomize;
    TD.TransactionID := Random(3600);
    TD.IsolationLevel := xilREADCOMMITTED;
    DMCN.SQLConnect.StartTransaction(TD);
   ...... procedures q gravam os registros.    ...... procedures q gravam os registros.     ...... procedures q gravam os registros.      DMCN.SQLConnect.Commit(TD);
Except
   on E:Exception do
   begin
      ShowMessage('ATENÇÃO!'+#13+'Aconteceu um problema e a baixa não poderá ser gravada!');
      if DMCN.SQLConnect.InTransaction then
         DMCN.SQLConnect.Rollback(TD);
   end;
End;
GOSTEI 0
Antonio Jesus

Antonio Jesus

24/09/2010

Olá!  Então, como estou usando POO e nem em todo o sistemas estou usando o StartTransaction. Alguma rotinas q estou fazendo e adptando pra Poo funcionam normalmente. Mas tem uma rotina q faz baixa de contas a Receber, acho q a partir deste momento quando o StartTransaction é ativado os problemas começam a aparecer. Pois se algumas vendas não desaparecem. Outra coisa observei, o cliente q não usa na maq. a rotinas de Baixa, o programa funciona normalmente. E o mais curioso, é consigo consultar via SQL tudo, mas depois q desliga a maq. alguns dados somem. já não sei + de nada, está se esgotando minha capacidade de raciocinio, pois só sendo um Bug do DBExpress, ai explicaria tudo.   100+   ANT.CARLOS/SP   Obs: desliguei o StartTransaction para fazer um teste, vamos ver no q q dá. 
GOSTEI 0
Antonio Jesus

Antonio Jesus

24/09/2010

Olá, bom dia! Desativei os Nivel de Isolamento (Start Transaction) do meu aplicativo. Acabei descobrindo q era isto q estava deixando eu e o aplicativo louco. Pois no teste na minha maq. tudo funcionou certinho, mas nos clientes não deu certo, não sei o q aconteceu, só sei que não funcionou corretamente. Como tinha dito antes, um módulo de BAixa usei o Start Transaction, as outras rotinas não, apenas (Ds_DataSourse.DataSet as TClientDataset).ApplyUpdates(0); Não sei se tem alguma coisa relacionada, mas...     bom deixo a dica pra quem for usar Start Transaction.   100+   ANT.CARLOS/SP
GOSTEI 0
POSTAR