日期:2014-05-18  浏览次数:20528 次

求救!!!
这是一个客户正在使用的软件, 昨天下午客户打过电话来, 

说昨天的一部分POS收银记录已经查不到了, 已经减掉的库存又加回去了! 

而在昨天下班前还能看到正常的记录。

数据库为SQL 2000开发版,打了SP4。



过程是这样:



在软件中通过存储过程执行: 

Insert into 表.................语句 保存数据,  

表中有一列ID 为自动增长,中间已经少了一部分数值,应该可以肯定数据已经插入表中。 

今天去客户那儿去看了,用Log Explorer打开的日志,情况是这样: 

  1、6月13日 12:21:02 之后直到关机前,插入收银记录、减少库存等正常操作确实已经存在, 

但操作时间为同一时间: 06-13 13:32:33 640。因为插入收银记录时表中有一个字段记录时间, 

在正常操作记录中可以看到插入收银记录的时间,此时间是正常的机器时间,与日志中记录的操作时间不同。 

  2、正常操作之后还存在与正常操作相反的操作记录,删除了收银记录,重新插入库存记录, 

时间与正常操作的时间相同。 

  3、正常操作中删除记录可以看到删除的内容,如减少库存时为两条记录,一条是删除原记录, 

另一条是插入新记录(库存商品数量为已减少出库数量后的数值),但是与正常操作相反的记录中, 

比如说删除掉的收银记录,无法看到被删除的内容,提示信息为:Additional invaid.... 

(没有记下原始的内容,大概是这两个单词)。 

  4、晚上大约22点关机,此时数据库有一项操作记录为:ABORT_XACT 


  应该可以排除人为的原因吧,感觉好象在中午12点21分之后的操作被数据库做为一个事务, 

全部回滚了。

------解决方案--------------------
可以帮顶吗?
------解决方案--------------------
ABORT_XACT --- 这是SyBase的命令, 就是滚回前面的交易

我想SQL Server也用了这个.
------解决方案--------------------
如果出现这个的话,表示都回滚了....
看看那上面的那个例子,
XACT_STATE (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms189797.aspx
------解决方案--------------------
那就的确很奇怪了.....
还是等老大来解决吧.....
------解决方案--------------------
帮你UP