很诡异的现象
环境是一个WEB系统
多个客户端集中进行某些操作的时候 比如商品盘点 扫描条码 后台数据库就会高并发地解析条码 查询商品
这个时候 其他客户端在登录的时候 系统去查询用户表 返回的datatable表名是用户表 但是datatable的列和数据都是商品表或者解析条码后的内容查询数据库的代码是最原生态的 即在一个函数内部new出一个dataset sqlconnetion sqlcommand sqladapter,因此可以排除代码级缓存的问题望赐教 谢谢

解决方案 »

  1.   

    LZ 确认一下在解析条码,查询商品的时候,datatable内容是否被替换了?感觉应该是前台代码的问题。 数据库这侧貌似没有什么特别的。
      

  2.   

    回2楼 客户的环境无法调试代码 只是把异常数据记录在日志里才发现现象的
    select A,B from sys_user
    把dataset的内容输入到XML如下
    <NewDataSet>
      <SYS_USER>
        <CODE_VALUE>D1350-01</CODE_VALUE>
        <CODE_NAME>D1350-01[D1350-01黑]</CODE_NAME>
      </SYS_ORGANIZATION>
      <SYS_ORGANIZATION>
        <CODE_VALUE>D1350-26</CODE_VALUE>
        <CODE_NAME>D1350-26[D1350-26棕]</CODE_NAME>
      </SYS_ORGANIZATION>
      <SYS_ORGANIZATION>......内容只是举个例子 未必固定 但基本上都是获取商品表的数据 鉴于这类问题发生时很多用户都在做商品盘点 所以怀疑和高并发查询有关数据库跟踪的语句看不出端倪的 因为在高峰时候 各种各样的语句都有
      

  3.   

    回3L 平时都很正常 只有在商品盘点的时候(高并发) 可能会出错 如果代码逻辑有问题 就一直错了
    回4L 代码不是我们部门写的 我也只是协助排查问题 开始我也想得和你一样 所以我就直接改原来的代码 创建局部变量dataset 登录sql就用来填充这个临时变量 用完就销毁 其他地方根本不可能访问到它 但是依然出现这个问题