关于锁的一个问题

DeadWolf 2003-06-03 11:44:22
客户端程序只在一台机器上会出现锁数据库的问题,而在其他的机器上从来就没发生过。

程序中没有显示编写有关数据库加锁的代码。

数据库系统是SQL2000
...全文
24 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2003-06-03
  • 打赏
  • 举报
回复
数据库锁的问题,比较常见,但象 gardenyang(太阳雨)说的因为机器慢导致的锁定很少见,在SQLServer2000中出现的几率很小,因为所谓的抢占资源,其实DBMS现在已经可以很好的处理。
但有几点需要注意,如果你自己进行事务锁,则一定要记着及时对锁进行释放。如要从表中的一个字段进行取最大值加一做为下行主键的问题,你要启动自己的事务,在这各事务中进行最大值的锁定操作,取出最大值后马上进行提交。在这个事务中建议你不要有提示信息等功能,设想以下如果用户离开的话,消息框一直没有关闭,就会导致表的一直锁定。
另外这中情况的锁类型应该为(TabLockX),而holdLock按意思也是一直锁定直到事物结束单经测试有时会过早的释放。
最后就是对锁定的处理:
通过企业管理器的管理下的活动可以查看当前的活动用户和锁,你可以查看属性是因为什么数据库要锁定记录,特别是那种死锁一定要处理,对表锁也要特别注意,而页锁的处理要看数据的访问率,不过一般情况下,DBMS可以很好的处理。
写了这麽多,如果有其他的,请大家会帖
gardenyang 2003-06-03
  • 打赏
  • 举报
回复
数据库加锁是自动的,可能你这台机器速度很慢吧
「已注销」 2003-06-03
  • 打赏
  • 举报
回复
数据库的隔离级别取决于DBMS,很多你在Delphi中设置的是无效的
DeadWolf 2003-06-03
  • 打赏
  • 举报
回复
TDatabase.TransIsolation的属性设置的是
tiReadCommitted
DeadWolf 2003-06-03
  • 打赏
  • 举报
回复
不是我不愿意把代码贴出来
只是一些Edit,Post,Insert,Open之类的操作
罗列出来可能大家看的头痛

因为只有那一台机器会发生这种情况,所以还没确定到底那个过程的代码引起的!

另外请问 tomyang(tomyang)怎样设置数据库的隔离等级
tomyang 2003-06-03
  • 打赏
  • 举报
回复
请详细描述问题。比如作什么操作的时候会发生锁,锁是的类型是什么等等
你的问题好像是:我写的程序没有对数据库的显示加锁操作,但是在一台特定的机器执行会出现数据库会被锁定,为什么?
这样的问题怎么回答?

另外提供一些常识:
数据库是否加锁与数据库设置的隔离等级相关,如果隔离等级设的高,则哪怕是select也会加锁。因此排除数据库锁的问题应当首先 检查锁的类型,检查造成锁的程序代码,检查数据库的设置,别着急,找到问题后,一切就简单了
tomyang 2003-06-03
  • 打赏
  • 举报
回复
当然是和操作数据库的代码相关
星之瀚海 2003-06-03
  • 打赏
  • 举报
回复
没见过
DeadWolf 2003-06-03
  • 打赏
  • 举报
回复
那我先试试看
belllab 2003-06-03
  • 打赏
  • 举报
回复
但你这种情况我的确碰到过,我就是这样解决的
belllab 2003-06-03
  • 打赏
  • 举报
回复
注意BDE用的是客户端游标->可能说错了,呵呵,请见谅!
belllab 2003-06-03
  • 打赏
  • 举报
回复
注意BDE用的是客户端游标,当数据量大时,它不会一下子将数据全部从服务器上取回来,因此服务器上将会占用资源。请在你的QUERY。OPEN后加上LAST;FIRST将数据全部取回来。(我曾经碰到过,它会造成阻塞,而且不是死锁,很麻痹人的)
DeadWolf 2003-06-03
  • 打赏
  • 举报
回复
BDE

目前数据量还不大
表里面就上千条吧

企业管理器查看到的SQL也不完整,就是SELECT 字段列表[由二十多个字段]
可能是从我程序中的SELECT * FROM 表名得到的
belllab 2003-06-03
  • 打赏
  • 举报
回复
把SQL语句写全,还有,你用的是ADO还是BDE,这条SQL语句的数据量有多大?
fhuibo 2003-06-03
  • 打赏
  • 举报
回复
楼主好恐怖
俺还是小心的为好!
DeadWolf 2003-06-03
  • 打赏
  • 举报
回复
通过企业管理器查看
锁定的进程的上一条TSQL是SELECT .....


简单SELECT为什么会锁定表

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧