使用DELPHI 2006开发的系统, 数据存取使用dbExpress组件,数据库SQLserver 2000,在一个城市内使用,有一百多个分点,每个分店有6-10台无盘工作站,C/S 模式,网络通讯使用的是光纤。系统经常莫明其妙死机,这时用户终端会白屏并一直停留在那里,没有提示,所有用户都使用不了,需要重新启动SQLserver。还没有掌握死机的规律性,有时是用户多的时候死机,有时是用户少的时候死机。怀疑是Dephi 的代码问题。盼请大侠指点!万分感谢!联系邮箱:[email protected]   QQ:54953979

解决方案 »

  1.   

    我也怀疑是Dephi 的代码问题?可是LZ,除了你还有谁知道你代码是什么样的?汗~~~
      

  2.   

    你说要重启动SQLServer,我怀疑是存取数据时造成的,极有可能阻塞了
      

  3.   

    呵呵,不好意思,原来我的话,还让LZ误会乐~~~汗~~~~建议LZ对代码检查一下,如果能贴一部分代码出来,
    比如你认为哪一小段代码最有可能出错,就贴出来。这样,才比较好分析
      

  4.   

    1、尽量全部工作由存储过程来完成,这样减少对数据的占用时间
    2、如果数据要读取到客户端,用Last把数据全部取完
    3、可以不用事务的就不用,同时检查用到的SQL语句,如果某一个用时太长,看是否不能利用索引
    其它的,等更多的DX来补充
      

  5.   

    谢谢belllab提供这么具体的建议。关于:2、如果数据要读取到客户端,用Last把数据全部取完。我们原来开发的思路与这不一样,说明一下:因为数据库中数据较多,我们为了提高查询速度,我们使用了"调整PacketRecords 的特性值为100”,避免DataSnap把所有数据一次下载到客户端。如果把数据一次性取到客户端,确实会影响速度。
      

  6.   

    我原来做过测试,进行一个数据量很大select 查询,并返回数据,不用last返回所有数据,发现此时delphi未取完所有数据,只取了部分,相当于使用分页吧,此时,我在服务器上曾发现这个select对表有锁的使用,那么就有可能造成其它的SQL执行要加锁的时候而形成阻塞
    它并不会总是造成阻塞,但是有可能会。
    还有,从用户那里了解详细情况,死机多是发生在进行哪个操作的时候
    如果在发生阻塞的时候你能在现场,当场查看一下造成阻塞的用户是在执行哪个SQL命令
      

  7.   

    顶belllab(菜鸟) ,这可是经验之谈~~