本帖最后由 netchessman 于 2010-06-25 10:55:34 编辑

解决方案 »

  1.   

    楼主贴的语句并不是sql 语句,而是在开发工具中的拼写sql的语句能否启动调试,然后把真正运行的sql语句发出来给大家看
      

  2.   

    外呼量的sql语句:
    select count(ResultID) from [NEO_CallResult] where ActiveID='71F7946C-2159-4A43-B3B3-C7B8F1D75E38' and RecordDate>='2010-6-24 0:00:00' and RecordDate<='2010-6-24 23:59:59' 传真的sql语句:
    select count(ResultID) from [NEO_CallResult] where ActiveID='71F7946C-2159-4A43-B3B3-C7B8F1D75E38' and CallResult='AD858F4E-7A66-40EE-9F2A-AA0D37612322' and RecordDate>='2010-6-24 0:00:00' and RecordDate<='2010-6-24 23:59:59' CallResult是外呼结果表的主键ID
      

  3.   

    其中有两台数据库服务器(使用到了sql2005的复制功能__采用事务性复制) A:发布服务器 B:订阅服务器这两台服务器跟你发的语句有什么关系?你的语句是查询的那个服务器呢同步在配置时,是6个小时进行一次同步,但自己写了一个系统服务,每两分钟去同步一次这个系统服务跟发布订阅有什么关系?也就是说在查询的时候,可能在同步数据。郁闷的是:
    外呼量为6088,自己在不停的去统计,不停的点击同步,当数据为正确的6089后,就再也点不出6088的情况外呼量是一个统计出来的count?
    自己不停的统计?是指什么?
    不停的点击同步?是指什么?外呼量不是6088吗? 6089为什么又说是正确的数据呢?
      

  4.   

    今天是25号,
    如果执行你发的那两条语句,应该统计出来的count是固定的呀
      

  5.   

    现在感觉从 2010-6-24 0:00:00 到 2010-6-24 23:59:59 这之间的数据,不管是6088 还是6089条,感觉这些数据也是有变更的。也就是说,查询结果出现不一致的情况,是因为数据变更引起,而不是语句的问题。
    如果确实有变更,所有问题就很容易解释:
    1. 首先查询外呼量,6088条,然后查询其他数据的时候,在这中间有1-2秒的延迟,在这个时间段内完全可能再同步一条数据过来,所以有一条的差距是完全有可能的。
    2. 当第6089条记录同步过来之后,你再就无法查出6089的结果,这个也是对的。因为数据确实增加了。所以我觉得楼主有必要去确认一下,从 2010-6-24 0:00:00 到 2010-6-24 23:59:59 这之间的数据,到底在25号这天是否还有变更。
    说的再直接一点,就是楼主确认一下,是否有数据是今天变更的,但是RecordDate这一列的时间却写了昨天的日期.
      

  6.   

    非常感谢Coolingpipe这个方案放在后面备用哈...呵呵我现在让主要的几个报表查询都指向了A(发布服务器)在观察一段时间,现在问题也变的难以再现。
    这前一段时间这些报表数据都是准确了,中途唯一与报表有关的,就是变更过sql server的复制,犹记得那次变更搞的加班到一点多钟才回去..之前那次变更本来是要以现在的B为发布服务器的,无奈这次变更复制涉及到几个数据库,表也比较多,开始配的时候出现的问题,最后导致怎么配置都配置不成功,B服务器完全配不了复制了。当时差点没打算重装sql server,最后决定以现在的A为发布服务器,一会功夫就配置好了,当时非常郁闷!!!如果到时候还是不行就用 Coolingpipe的方法,谢谢Coolingpipe!!