我做的一程序,在几个地区使用都很正常,但到一个地区却遇到了怪问题:
  一个模块中在一个事物处理流程中修改的几个表,有的修改了有的却没修改。
大致情况是这样:
  一主文件a存款一笔,修改主文件余额后生成历史文件.连续录入时会有这种结果:
   a=100 分三次存款100后(连续录入,在一个界面中)
生成了三笔历史
   日期  老余额   发生额    新余额
   10/8  100     100       200
   10/8  200     100       300
   10/8  300     100       400
但录入完后发现a的余额又变回100了!
如果是发生了rollback事件那应该也不会产生这三笔历史交易的呀!
我把数据拷到自己手提上试从未发生过此情况!
发生此问题后从新装过nt+sqlserver,排除病毒的情况!
我现在能想到的是log文件太大了。.mdf 3M多,.ldf已经有37M了。
做过backup  log后,log不减少。我怀疑是这个log乱套了。
客户已经对我们老出这问题产生怀疑了兄弟们救救俺吧!
 btw
问题已经产生了怎么去分析这个log呢?
  

解决方案 »

  1.   

    1、能保证查看余额的程序是对的吗?
    2、没看清数据是不是存入数据库了。
    3、有可能日志文件满了,插入新记录的操作不能完成,但程序中没有捕获这个错误,认为记录已经保存。你试一下将日志截断后再试。
    4、可以用profiler跟踪一下,看保存这三条记录时的语句,及执行情况。可能比较好找出原因。
      

  2.   

      1.查看余额的程序是对的;
      2.当时每输完一笔后没注意去看数据库,但从每笔历史得到了正确的老余额看,当时主文件应该也修改了;
      3.日志文件我准备del重来;程序对每一个数据库操作的语句都做了错误捕获。
      4.今天用profiler跟踪一天,看结果如何。