有史以来最棘手的问题,快要血崩了,求救~~

邹夫子 2011-09-22 06:11:50
是这样子的,上个星期,公司的系统出错(都是修改了资料的时候,进行保存,然后出错的,图片不知道怎么发上来,如果需要的话,可以找我要,我的QQ是:315562107)
,根据提示是说更新表有问题,然后我跟踪了一下程序出错执行的语句,和没有出错执行的语句,发现两个的差别是,出错的时候,没有提交事务,事务进行了回滚,但是整个MSSQL语句是没有问题的。
出错的之后,如果退出程序,再登录,再重新操作,这样子重复三四次之后,又可以保存了。还有个问题就是,如果一旦出现错误,不管操作其他什么功能,反正是保存资料都会提示出错,真是头疼啊,都搞了两个星期了,一点问题都没查得出来,差点要血崩了~
...全文
1440 79 打赏 收藏 转发到动态 举报
写回复
用AI写文章
79 条回复
切换为时间正序
请发表友善的回复…
发表回复
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 78 楼 zouxian 的回复:]
引用 76 楼 qianjin036a 的回复:
你不会是用的D版吧!~~


什么意思啊?什么D版?
[/Quote]

哦,我知道了,程序不是盗版的,是正版来的,不过已经三年没有和开发商签维护合约了,一直都是我们自己在维护,以前都没出现过这种问题,上两周才开始出现,而且有点一发不可能收拾...
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 76 楼 qianjin036a 的回复:]
你不会是用的D版吧!~~
[/Quote]

什么意思啊?什么D版?
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 71 楼 kylike 的回复:]
对9-9的数据库,在后台(查询分析器)执行更新语句看一下,如果能保存,说明数据库是没有问题的。反之则一定是程序的问题。
[/Quote]

这个很早就试过了,跟踪出来的语句,在查询分析器里面执行是没有问题的,程序现在是因为回滚了事务,所以提示更新表错误(我现在觉得这个update表错误的提示,并不是语法上的错误,而是业务上的错误提示来的因为那张表是保存所有数量的总和的。)。
-晴天 2011-09-26
  • 打赏
  • 举报
回复
你不会是用的D版吧!~~
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 xiaozhe51 的回复:]
可以肯定,这是程序问题,数据库的不同,只是诱因。

比较二个数据库的数据,看看在哪有什么不一样的地方,然后根据出错的地方,查看相关的表,看看里边的数据有什么不一样的。并且查看数据的关联。

Delphi程序如果是在程序里包含了事务,那就根据它处理的数据进行关联查找数据。
不过,这种系统架构似乎应当退出历史舞台了。
[/Quote]

你说是程序问题我也同意,两个数据库之间数据的比较我没有做过,因为数据太多了,不u过我们已经把9月9号之后的数据删除之后做测试,问题依旧存在,我现在总是觉得程序是根据某个条件做了判断,然后回滚了事务,但是至于是根据哪个条件判断的,到现在都还不是很清楚。
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 68 楼 qianjin036a 的回复:]
反汇编~~~~~
[/Quote]

反汇编还没试过,公司没有dephi的开发人员,所以现在都是把目标放到数据库上。
邹夫子 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 69 楼 zhengy88 的回复:]
查找禁止某些触发器,看看能不能恢复
[/Quote]

我之前也查过一些表的约束和触发器之类,发现相关的表没有触发器。

tiexue1226 2011-09-25
  • 打赏
  • 举报
回复
70楼说的好
kylike 2011-09-25
  • 打赏
  • 举报
回复
对9-9的数据库,在后台(查询分析器)执行更新语句看一下,如果能保存,说明数据库是没有问题的。反之则一定是程序的问题。
-晴天 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 zouxian 的回复:]
引用 50 楼 jalor_6 的回复:
出错了,程序上什么提示都没有吗?


有的,提示是更新表出错。
[/Quote]

检查是什么样的数据可能会产生回滚(还是不相信数据库会有什么问题,如果有问题,以前的数据都无法插入)如果能找到,在表中加一个instead of触发器,看看是否有用.
-晴天 2011-09-24
  • 打赏
  • 举报
回复
反汇编~~~~~
邹夫子 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 66 楼 qianjin036a 的回复:]
引用 62 楼 zouxian 的回复:
引用 61 楼 qianjin036a 的回复:
可能是在更新时,程序要检测某个什么数据,如果发现该数据不符合要求,就回退吧.我坚信,你这个回滚是由程序造成的,与数据库没关系!


你这样子说也没错,但是程序判断的依据应该还是根据数据库里面的数据,现在程序的东西修改不了,只能去找数据库里面的数据是不是有问题了。


哥们,你要跌倒了,不是脚……
[/Quote]

没办法啊,程序我们没有源代码,调试、跟踪不了。我觉得程序的事务回滚判断应该还是和数据库有关的,现在只能在数据库,因为只有数据库是我们可以控制的,我知道这个是比较杯具的,但是也没办法了。被**了,也得说爽~~
-晴天 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 zouxian 的回复:]
引用 61 楼 qianjin036a 的回复:
可能是在更新时,程序要检测某个什么数据,如果发现该数据不符合要求,就回退吧.我坚信,你这个回滚是由程序造成的,与数据库没关系!


你这样子说也没错,但是程序判断的依据应该还是根据数据库里面的数据,现在程序的东西修改不了,只能去找数据库里面的数据是不是有问题了。
[/Quote]

哥们,你要跌倒了,不是脚的问题,是大腿的问题,那你再仔细研究脚有啥用啊!
xmwgp 2011-09-24
  • 打赏
  • 举报
回复
可能和保存的具体数据有关系?
邹夫子 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 64 楼 zouxian 的回复:]
引用 63 楼 szto2003 的回复:
可能是程序预留了时间限制,估计做成必须保存4次才可以保存数据,方便收取服务费吧!!


我们现在也很担心是这个问题,但是现在还不确定,一个公司不至于这样子吧。
[/Quote]

但是又不像啊,因为换个9月8号的数据库,又不会出错,除非时间是保存到数据库里面去了。
邹夫子 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 szto2003 的回复:]
可能是程序预留了时间限制,估计做成必须保存4次才可以保存数据,方便收取服务费吧!!
[/Quote]

我们现在也很担心是这个问题,但是现在还不确定,一个公司不至于这样子吧。
szto2003 2011-09-24
  • 打赏
  • 举报
回复
可能是程序预留了时间限制,估计做成必须保存4次才可以保存数据,方便收取服务费吧!!
晓哲 2011-09-24
  • 打赏
  • 举报
回复
可以肯定,这是程序问题,数据库的不同,只是诱因。

比较二个数据库的数据,看看在哪有什么不一样的地方,然后根据出错的地方,查看相关的表,看看里边的数据有什么不一样的。并且查看数据的关联。

Delphi程序如果是在程序里包含了事务,那就根据它处理的数据进行关联查找数据。
不过,这种系统架构似乎应当退出历史舞台了。
邹夫子 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 qianjin036a 的回复:]
可能是在更新时,程序要检测某个什么数据,如果发现该数据不符合要求,就回退吧.我坚信,你这个回滚是由程序造成的,与数据库没关系!
[/Quote]

你这样子说也没错,但是程序判断的依据应该还是根据数据库里面的数据,现在程序的东西修改不了,只能去找数据库里面的数据是不是有问题了。
-晴天 2011-09-24
  • 打赏
  • 举报
回复
可能是在更新时,程序要检测某个什么数据,如果发现该数据不符合要求,就回退吧.我坚信,你这个回滚是由程序造成的,与数据库没关系!
加载更多回复(58)

22,207

社区成员

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

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