3
3p
Unregistered / Unconfirmed
GUEST, unregistred user!
我初次采用delphi开发mssql6.5的数据库应用系统,对系统开始使用后出现了严重的更新锁定问题,不知有否最佳的更新策略,我的某个更新操作form设计
如下:query+updatesql
query的cacheupdate,requestlive为true
query的sql为一般的select....语句
我用dbgrid接受query的输出结果作为游览,(我的原意是让用户游览的
同时可修改数据)
这是个极普通的设计.但放到多用户的环境下运行时,却发现出现了锁定吊死
的现象,同一时间只能有一个用户可修改数据,另一用户进入界面只能游览,如果
修改/插入,呈现死机现象(在等另一用户退出界面).察看书籍,这应该是数据页
加了锁的问题.在Isql下发出sp_lock2察看程序进入界面时的锁的状况,发现
table已经加上了共享锁SH_PAGE,SH_INT这意味着此时如果另一用户也进入该
界面,他将只能游览,即使把cacheupdate,requestlive设为false还是那样子
把updatesql也删除,单纯query运行测试,还是加了共享锁,看来delphi对sql
语句的返回结果都做了处理加了共享页锁.
我在MSSQL的Isql中编写了一个小事务
begin tran
select * from table1
waitfor delay '00:00:20'
commit tran
运行期间再用sp_locak2察看,并没加上任何的锁,我该如何更好地编写程序既能
方便用户查看,又方便用户的更新操作,避免这恼人的锁的问题?请各方神手发表
看法!谢谢
如下:query+updatesql
query的cacheupdate,requestlive为true
query的sql为一般的select....语句
我用dbgrid接受query的输出结果作为游览,(我的原意是让用户游览的
同时可修改数据)
这是个极普通的设计.但放到多用户的环境下运行时,却发现出现了锁定吊死
的现象,同一时间只能有一个用户可修改数据,另一用户进入界面只能游览,如果
修改/插入,呈现死机现象(在等另一用户退出界面).察看书籍,这应该是数据页
加了锁的问题.在Isql下发出sp_lock2察看程序进入界面时的锁的状况,发现
table已经加上了共享锁SH_PAGE,SH_INT这意味着此时如果另一用户也进入该
界面,他将只能游览,即使把cacheupdate,requestlive设为false还是那样子
把updatesql也删除,单纯query运行测试,还是加了共享锁,看来delphi对sql
语句的返回结果都做了处理加了共享页锁.
我在MSSQL的Isql中编写了一个小事务
begin tran
select * from table1
waitfor delay '00:00:20'
commit tran
运行期间再用sp_locak2察看,并没加上任何的锁,我该如何更好地编写程序既能
方便用户查看,又方便用户的更新操作,避免这恼人的锁的问题?请各方神手发表
看法!谢谢