关于sql server表加锁访问的一些经验

MSSQL应用锁实战
本文介绍了在MSSQL中使用应用锁(Application Lock)解决多用户环境下特定存储过程的串行执行问题。通过GetAppLock和ReleaseAppLock实现了对特定表操作的选择性排他控制,确保操作按顺序进行,同时允许其他不受限的存储过程并发访问。

       MS SQL中的锁在范围上分为行级锁、页级锁、表级锁,在功能上分为共享锁、更新锁、独占锁。这些锁的原理与用法,网上讨论的很多,我就不多说了。在这里我想重点介绍的是另一种锁:应用锁(application lock)。

      说起来我使用应用锁纯属被逼的,我在完成一次项目应用时试遍了所有类型的锁,都无法满足我的要求。我的要求其实比较简单:就是在多用户的应用中,对表的操作全部用存储过程实现。针对某些特定的表,有一些存储过程操作时需要进行选择性排他操作,即我操作完了以后,才允许下一个用户进行相同操作,这个操作是串行的。而同时,我还必须允许其他的存储过程访问同样的表,即不排斥某些存储过程访问。由于最开始提到的那些锁经过测试都不能实现这个要求,最终我选择了应用锁。应用锁其实很像win api里的边界(CriticalSection),当一个进程通过调用GetAppLock申请到一个应用锁后,其他进程再调用GetAppLock则需要等待第一个进程调用ReleaseAppLock释放这个锁。这样我就达到了有选择的排他的目的,只会阻止那些调用GetAppLock的进程访问资源,而其他进程可以并发地访问这些资源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值