咨询一个奇怪的 sql2000 问题,希望sql2000高手 都进来(100分)

  • 主题发起人 主题发起人 sl98_1
  • 开始时间 开始时间
S

sl98_1

Unregistered / Unconfirmed
GUEST, unregistred user!
硬件环境 dell 的服务器 2cpu 4g内存(以前 ibm 2cpu 1g内存 也出现过同样问题)
操作系统 win2000
数据库处理过程
一个存储过程A 处理数据然后将数据插入到 临时表中 (带#的临时表) 然后这个存储过程A调用另一个存储过程B,存储过程B对临时表进行处理,最后将临时表数据插入到正式表里面,出现这样的问题
正常的数据应该为
dwbh bm rkshl rkdj rkje
DWI00000176 销售部 0 0 0
现在的错误数据为
dwbh bm rkshl rkdj rkje
aaaaaaaa200 DWI00000176销售部 101684215116022. -2.5600 -10995116277.76
上面的数据就是正常数据的一部分,有部分字段是正确地。而且并不是每次都有错误,出现的机率很小,和他相关的表记录的数据都是准确的(相关的表是在存储过程a中提前插入的)
对于这个问题 本人的观察是 临时表中的数据往正常数据库里面插的时候 出现了移位错误
比如数字把 本来因该为0 但是移了很多位以后 出现了差异较大的数据
问一下各位高手 遇到过这样的问题吗
 
没有,学习一下,请把心得写上供我们学习,谢谢
 
是啊,我也遇到了与这类似的问题,我的是视图在数据库中过滤出来的数据与delphi中过滤出来的数据不一致(同样的where条件)
 
你在从临时表插入主表的过程,有没有字段的处理呢,还是直接插入的?
 
hityou
有 我针对 部分字段处理了 比如一些 isnull(,0)或者改值 处理的这些 反而都是对的
或者可以说是正常的,一点没有处理的直接插入的 都不对
 
nicki
我这个不涉及到 程序问题 主要就是sql 自己的处理过程
 
tyj06102000
要什么心的
 
你再存储过程A,B中分别查询一下临时表 看返回值是否和你预期相同
最好将关键代码贴出看看
 
xinjinren
正常的时候是一样的 几乎 几万次 才出现一次我说的那个错误
 
你检查一下出现该现象时是否有规律,或者正好某个遇到某个条件时都会发生
实在不行 就在第二个存储过程里面修改表值前判断临时表的值是否有明显的异常,如果异常发生,就报错,终止执行吧
 
xinjinren
哦 个人感觉不是逻辑问题
我们现在有 2个不同的A存储过程 一般其中有一个一执行就容易出现这种情况
但是单看逻辑不想有问题 所以现在比较头痛
 
你两个存储过程是否实现的功能是一样的,如果是一样的,但是其中有一个一执行就容易出现这种情况 虽然逻辑没有问题,但用法不当也可能出现错误的嘛
能否发上来大家帮你分析一下[:D]
 
可以用SQL的事件探查器查一下所有的语句,看看错不错
 
应该还是保存数据前的数据处理问题.
检查数据处理部分吧.
某个条件分支的问题
 
你可以在单CPU上去执行试一试,如果没有问题的话,那么就是双核的问题,在CMOS中有一个设置 意义是内存保护的选项,把它修改成使保护就可以了。我们前一段时间就出现过这样的问题,但和你的有点不一样,不会是随机的,而是单核机上没问题,双核机上一定有问题,你可以试一试。我上面所说的问题的原因是操作系统的线程在双核CPU上进行转换的时候,内存的内容会有一部分的变化(如果是在没有进行内存保护的时候)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部