给个变态的问题整惨了,再次求救~~

邹夫子 2011-10-11 09:42:24
最近真的是吐完血之后,在吐血,唉。。废话少说了,先说说我遇到的变态问题。

系统:东升ERP
现状:近三年多来,ERP一直都是电脑部在维护,一直都没有出现过什么大问题,但是现在出的这个错误
,真的是让电脑部所有人都崩溃了,每天接到的投诉不断,我们也花了一个多月的时间了,但是
一直都没有找到问题,基本上,想到的我们都测试过,但是一直都没有什么结果

错误提示:在修改了数据之后,点击保存按钮进行保存,系统总是提示“错误!Error updating
STOCKTRANS,资料库操作失败!你想再试一次吗?”(注:STOCKTRANS 是一张表来的)

出错的特征: 第一、偶然性
第二、一旦出错,接着后面的任何操作,保存都会出错,不管操作哪个模块都是一样。
第三、如果出错的话,需要完全退出程序,然后重新操作,这样子重复三四次之后,又可以保存成功。
第四、出错的时候,只是回滚了事务。语法上没有任何错误。
第五、程序连接9月8号之前的数据库没有出错,但是连接9月9号之后的数据库就出错。


基本上可以排除的原因

第一、不是程序问题
连接9月9号以后的数据库,有出错,但是连接9月8号数据库,没有测试到出错,用的是同一程序。


第二、不是数据问题
1、出错是偶尔性的,不像是数据有问题,因为数据的问题,基本上出错都是比较固定的。
2、我们也查找过有问题的数据,当时采用的是二分法,将9月9号数据库9号那天STOCKTRANS表的数据
,一部分一部分添加到9月8号的数据库STOCKTRANS表中,测试直到出错,当时测试的时候,我们发现有
一条数据,添加进去就出错,没有添加进去就测试不到错,当时以为真的是这条数据有问题,狂喜一阵,
但是后来再次 测 试,1、另外还原9月9号数据库,删除该条数据,错误依旧 2还原9月8号数据,添加该条数据,还 是没有测试到错误,吐血~~

第三、不是程序执行的T_SQL有问题
出错的时候,只是回滚了事务,T_SQL语法、或者语句完全没有问题,我将跟踪到的语句放到程序分析器

去执行过,没有任何错误。

第四、数据量多大的问题
我们试过清空数据库所有的数据,只留下基础资料,但是依旧会出错。

第五、不是STOCKTRANS表有问题
我们试过讲9月8号数据库的STOCKTRANS表替换到9月9号的数据库中,但是依旧会出错。

第六、不是程序服务器问题
我们现有数据库服务器,和程序服务器两台服务器,我们试过用另外一台服务器,还原9月8号之前的服

务器环境(我们每天对程序服务器进行Ghost),问题依旧。

第七、不像是锁的问题
死锁基本上都是导致死机,如果说是超时,但是有时错误提示弹出来很快,不像是。


第八、试过checkdb,reindex、没有什么效果

.....

还有很多都测试过,一时想不起来这么多,估计是精神太恍惚了,请各位兄弟帮忙。
...全文
761 108 打赏 收藏 转发到动态 举报
写回复
用AI写文章
108 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-10-13
  • 打赏
  • 举报
回复
太阳黑子爆发了。
宇宙射线增强了。
臭氧空洞变大了。
厂商埋下的逻辑炸弹爆炸了。
赵4老师 2011-10-13
  • 打赏
  • 举报
回复
机房供电不稳了。
机房空调温度调高了。
机房附近最近刚新启用了一个移动发射塔。
机房上方新拉了一条高压线。
机箱里面新搬进一家蟑螂或老鼠。
插座过热熔化打火了。
硬盘上有坏块了。
CPU风扇不转了。
内存条上落灰了。
杀毒软件干扰文件读写了。
微软更新了。
老板甩小三了。
禁用F3 2011-10-13
  • 打赏
  • 举报
回复
我认为这个应该是程序问题,如在输什么数据的时候保存.在保存上DEGBUG一下.跟踪问题容易查得到.也有可能这个保存彩用了线程方式提交的.这样就会出现这样的问题.我上次写过一个这样的程序,我操作正常,用户偶偶有问题..结果我要用户在我的开发环境上操作,结果问题查出来了.是用户提交的字符串在我程序里面拆分不对.所以出现问题.后来加个try异常处理一下就好了
gw6328 2011-10-13
  • 打赏
  • 举报
回复
多数为代码里与时间有关的处理问题哦。
wznkp 2011-10-13
  • 打赏
  • 举报
回复
同事说 拿10万帮你搞定
很牛的一同事
zhongxin799 2011-10-13
  • 打赏
  • 举报
回复
楼上很多高手都给了分析方法 ,
也有一个应急的方法,自己参考程序修改界面,SQL PROFILER 写一个程序代替原系统的修改功能,反正也是用半年
wquanchao 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 zouxian 的回复:]
引用 55 楼 qianjin036a 的回复:
引用 50 楼 zouxian 的回复:
引用 48 楼 qianjin036a 的回复:
其实,你还不如把系统上传上来,让大家试试,这样光是表述,让大家猜,恐怕难以帮到你.


现在ERP系统的安装文件我们也没有,之前程序安装和更新都是软件开发商自己搞的,不经过我们,所以这个就没有得上传了,不过如果你或者其他兄弟有空的话,我可以远程给……
[/Quote]
代码设计中的BUG问题,没啥好说的
gengchenhui 2011-10-12
  • 打赏
  • 举报
回复
看意思是找不到问题所在了?
NBDBA 2011-10-12
  • 打赏
  • 举报
回复
知道erp是什么语言开发的吗
haitao 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 85 楼 bao22314483 的回复:]
以我經驗來看是代碼設計的問題,但是需要幾個條件才觸發這個錯誤,所以讓你感覺困擾,如果是某一個條件觸發
錯誤是比較好找出原因的,好好仔細看看9號那天的數據,重複測試幾遍,給點耐心,既然廠商要價100W,這個
問題絕對不是小問題來的
[/Quote]

为100万而留的后门?!

是时间相关吗?把系统日期改到哪天之前呢。。。。。。

错误!Error updating STOCKTRANS,资料库操作失败!你想再试一次吗?
不像是sql报的错,程序在什么情况下才会报呢?
chen8967 2011-10-12
  • 打赏
  • 举报
回复
改一下系统时间,别是时间限制
Andy__Huang 2011-10-12
  • 打赏
  • 举报
回复
依据楼主说自己删除过数据库,我感觉要从以下方面去考虑:
1.是否系统某个参数不对了?
2.是否存在触发器?
3.这个错误“Incorrect syntax near the keyword 'WHERE'.”明显表示语法不通过,应该考虑有了哪些特殊符号?
4.事务处理begin tran ....commit tran ....rollback tran ,处理处理是有级别设置,你是否可能设置为最高级别

wanglingzhong 2011-10-12
  • 打赏
  • 举报
回复
呃,delphi,想起了一个错误提示:
Record not found or changed by another user
Q315054403 2011-10-12
  • 打赏
  • 举报
回复
也有可能是程序留的后门。。比如你不付维护费,就来这招。。。

PROFILER再分析一下,一定能找到原因。。。
  • 打赏
  • 举报
回复
如果有心做后门,可以设置的潜伏条件太多了,怎么都有可能,没什么不可思议的。

这样比较复杂的系统,无论是BUG,还是由于不正常的使用造成的“意外未处理”或“错误提示不明确”的后果,都不是一般外人好处理的,就算你让当初的厂家来查找问题,都不一定会是一天内就能找到问题的。

所以,选择软件厂家才是很重要的问题,而现在国内的用户对此几乎完全没概念,不是吃回扣就是照顾关系,或者被广告忽悠,更没有和软件厂家建立成熟的长期合作伙伴关系的意识。如果这样的话,只能说是咎由自取了,长教训吧。
窗户纸 2011-10-12
  • 打赏
  • 举报
回复
给你一个兜底的办法:
这种问题的原因肯定是9月8日~9日间你们进行了什么操作造成的系统出错,东升的数据混乱了(归根到底还是他们的BUG),后面的业务就有麻烦了。
处理方法:
恢复到9月8日的系统,将9月8日以后所有的业务数据手工输入到系统中,应该就会OK,总费用也不高,比你抓瞎的查系统错误(那是东升的错误,没有日志、没有源程序,作死呢)强多了。

当然还有个办法就是分析他数据库的数据。貌似出错的数据应该是固定数据(如xml配置文件、固定表数据等),可以逐一比较9月8日与9月9日固定内容数据有什么不同。
shshjun 2011-10-12
  • 打赏
  • 举报
回复
这个要仔细研究一下数据库出错时的日志进行认真分析了.请参考以下这个对SQL2005可用。
http://sqlfascination.com/2010/02/03/how-do-you-decode-a-simple-entry-in-the-transaction-log-part-1/
http://sqlfascination.com/2010/02/05/how-do-you-decode-a-simple-entry-in-the-transaction-log-part-2/
http://sqlfascination.com/2010/02/21/decoding-a-simple-update-statement-within-the-transaction-log/

一般而言,整个出错和回滚都会在日志里面有对应的记录的.而你们现在已经可以重现这个问题了,觉得应该不再需要另一个月了吧.
波导终结者 2011-10-12
  • 打赏
  • 举报
回复
第二、不是数据问题
1、出错是偶尔性的,不像是数据有问题,因为数据的问题,基本上出错都是比较固定的。
2、我们也查找过有问题的数据,当时采用的是二分法,将9月9号数据库9号那天STOCKTRANS表的数据
,一部分一部分添加到9月8号的数据库STOCKTRANS表中,测试直到出错,当时测试的时候,我们发现有
一条数据,添加进去就出错,没有添加进去就测试不到错,当时以为真的是这条数据有问题,狂喜一阵,
但是后来再次 测 试,1、另外还原9月9号数据库,删除该条数据,错误依旧 2还原9月8号数据,添加该条数据,还 是没有测试到错误,吐血~~


那条数据你们没有再拿出来研究下?可能是某行的某个字段数据有问题,比如半个汉字之类的……

还有,确定出不出错,你们必须把所有条件都还原固定,才能排除出来,比如服务器和客户机的时间等,光是一遍一遍试,鬼知道是什么造成的……
zzxap 2011-10-12
  • 打赏
  • 举报
回复
Incorrect syntax near the keyword 'WHERE'.

WHERE附近有语法错误关键字.

很明显是SQL语法错误啊。拼接的sql不对
邹夫子 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 91 楼 qianjin036a 的回复:]
把系统日期向前提半年,告诉用系统的人,日期得向前半年考虑,半年之后,把系统连同开发商一同扔到东海里去.
[/Quote]

但是不用修改系统时间,用9月8号数据库都没有问题啊兄弟,所以又不像是这个问题啊?
加载更多回复(88)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧