Fórum SGBD perdendo dados sozinho #387076
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
Posts
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;
-----------------------------------
18/10/2010
Emerson Nascimento
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;
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á.
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