数据丢失的问题!莫名其妙----- 求助 ( 积分: 100 )

  • 主题发起人 主题发起人 寒芳轻
  • 开始时间 开始时间

寒芳轻

Unregistered / Unconfirmed
GUEST, unregistred user!
cs系统delphi 写一批数据到sql库里面,当天检查数据保存成功,第二天也还有,等过了几天却发现该表里的那几条数据中的某条不间了,个人感觉不会是我程序的原因吧,要是的话,当天也就保存不成功了啊,丢失也应该是所有的都丢失啊!还有,系统的操作是只插入数据,不删除!主键不会冲突! 而且只有那个客户的数据库出现了这种情况,别的客户还没有,请问各位路过的达人。。这是什么原因撒[:(]
 
有人直接操作数据库,恶意删除。
 
不会吧,谁这么可恶啊!会不会是因为我程序里面的事务回滚出bug了?<br><br>谁能给我个delphi+sql的事务规范格式啊!!
 
事务回滚是数据库自动删除未完成事务的记录,不可能今天有、明天有、后天就没有了。
 
原因有三个<br>1、眼睛问题,不是几天前看错,就是几天后看错<br>2、人为直接从数据库中删除<br>3、程序问题,SQL语句出错,或者某个地方存在什么BUG<br><br>楼主说的对,你的一个事务不可能执行好几天了,还没完,然后被回滚。再说,如果是事务回滚,也不会仅少一条记录,应该所有记录都“滚”了。^-^
 
to&nbsp;levi<br>&nbsp;&nbsp;老大,绝对不是眼睛问题啊,客户好几个人看到的哦<br>&nbsp;&nbsp;人为的,我不感肯定,如果是认为的,我能查到么,从日志里看?<br>&nbsp;&nbsp;程序不可能有的还有,有的没了啊........<br>&nbsp;&nbsp;丢了几百条,我刚看了下主键
 
人为的可能性更大一些。
 
是否有严重死机,而且是读写文件的时候死机,XP有自动保存还原点(可以取消),<br>当硬盘有严重问题,重启之后,会自动还原,我就试过,刚修改并保存好了&nbsp;PAS文<br>件,调试的时候死机,重启时候扫描,发现丢失文件,结果自动还原到前一天自动<br>保存的还原点,文件变回前一天的版本,但我又不肯定,特别是自动保存的还原点,<br>不是经常有的,打开还原系统,也可能见不到,但这种情况,我试过了许多次。
 
有沒有寫過籌發器,或者級聯刪除的設置.
 
这张表有没有和别的表存在“关系”!就如同删除主表自动删从表的记录这种关系。。
 
个人认为是直接从数据库中删除记录的可能性大。
 
写个删除触发器记录一下情况
 
to&nbsp;ks_reny&nbsp;没有写那些<br>&nbsp;to&nbsp;zhengjp&nbsp;这个表和别的表没有'关系'<br>&nbsp;to&nbsp;kinneng&nbsp;可是这边的数据是隔了几天才丢掉的啊。。。。。<br>&nbsp;to&nbsp;xeen&nbsp;能否给个例子。。。谢谢
 
写个删除触发器记录一下情况&nbsp;&nbsp;,记录以后是否还会有这样的问题,这个方法不错,哈哈
 
还有,我把我的代码贴一下吧<br>&nbsp;&nbsp;for&nbsp;i:=1&nbsp;to&nbsp;cs1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xh:=xh+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.append;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('issn').AsString:=ado2.fieldbyname('issn').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('flh').asstring:=ado2.fieldbyname('flh').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('zch').asstring:=ado2.fieldbyname('zch').asstring;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('qkxh').asinteger:=qkxh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('xh').AsInteger:=xh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('dm').AsInteger:=dm1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('qkbh').AsInteger:=qkbh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('qkmc').AsString:=qkmc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('tsm').AsString:=tsm;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('nd').asstring:=nd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('qdrq').asstring:=qdrq;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('czy').asstring:=czy;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('memo').asstring:=memo;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.FieldByName('qi').asstring:=qi;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('juan').asstring:=juan;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('zt').AsString:='在架';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.fieldbyname('kj').asstring:=ado2.fieldbyname('dj').asstring;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ado3.Post;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dm1:=dm1+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>ado3连的表的主键是&nbsp;dm,就是这个表的数据丢失了,这个操作没写成事务<br>当然最后也执行了UpdateBatch(arAll);<br><br>我就是想知道是不是因为这个原因。。。。。
 
数据丢失的时间是半个月后,这种情况。。。。。令人费解啊。。。。。<br>&nbsp;&nbsp;难道真的是人为的?????<br>&nbsp;&nbsp;真的要写个触发器记录下了,看是谁弄的[:(!]<br>&nbsp;&nbsp;哪位老大给个例子啊。。。。。
 
人为删除的可能性很大
 
人为可能性大,而且也是懂一点数据库的人,你把他数据库设为只能用SA加密码登录,(不让系统管理员能进入)并且不告诉他们密码,也就是说他们只能通过你的程序访问数据库。这样再试试,还有检查你程序中所有删除的代码,看会不会哪个参数设错了,删除到了其它不该删除的数据去了。
 
查看一下数据库的日志文件啊&nbsp;&nbsp;<br>看是否你不在操作的时候&nbsp;&nbsp;&nbsp;有日志发生呀<br>不就知道&nbsp;有没有人操作过数据库了吗?
 
多人接受答案了。
 
后退
顶部