问题很奇怪,有数据库经验的大虾过来看看(100分)

  • 主题发起人 主题发起人 wolf7525
  • 开始时间 开始时间
W

wolf7525

Unregistered / Unconfirmed
GUEST, unregistred user!
很奇怪,客户端可以连接服务器,但是用到划价这功能时就死机,别的机器可以正常使用,
有时同一台机器可以发药,但是不能划价,不知道各位大虾有没有遇到这问题
我用的是BDE方式,delphi+sqlserver 2000 C/S模式
还有当我把服务器重新启动时一切正常
客户端是98系统,服务器2000 ADVANCE SERVER
 
似乎可以查一查对数据库操作时,是否严格所顶多一个数据表同时多人操作的权限设置
 
是不是形成了死锁?
 
我也怀疑是死锁了,可是我对锁的概念还不是很清楚,所以只是怀疑
因为这个系统一般是工作正常的,服务器还是比较稳定的
 
只有一个用户操作时也死机吗?你的情况很可能是死锁,用户A开了个事务,执行了动作查询,
没有递交,用户B要访问被锁的表,就死锁了!
 
用bde的话,每次的select语句都会对数据表进行加锁,知道query使用了close或active:=false;
 
用bde还有这么回事?每次select都要加锁?不可能吧,那服务器就没法运转了,特别是药品字典表
用的单位很多的,那岂不是早死掉好几次了?
 
一个事务尽可的短,执行完马上提交.

//你在MSSQL的事件查看器中看一下,是不是事务没有提交.
 
我怀疑我们公司的系统做的不好,害的我们项目实施人员成天给他们擦屁股
 
真的是有锁,我用的是sybase,在sql advantage里运行sp_lock就可以看到系统当前全部的锁
这个时候除了读操作,其他的操作都会被堵塞。
 
我觉得不一定是并发操作的原因,因为一个C/S系统,解决并发操作是一项很重要的问题,
你们公司的程序员应该考虑到了这个问题,换个思路想想是不是别的原因吧。
 
SQL Server本身是多线程得数据库!不知道你得划价是什么概念?执行得是SELECT还是UPDATE?
你把这个功能用存储过程写到后台,然后用Delphi调这个存储过程,再试一下,如果问题依旧就是你的各表之间得关联有问题,如果解决了就是BDE得问题。
 
可能是事务打开后没有关闭导致表不能被其他用户操作
 
BDE的配置问题
 
多人接受答案了。
 
后退
顶部