如何加? 
我想能够 
create proc aaa 
as 
给ABC加锁 
N多个操作 
给ABC解锁

解决方案 »

  1.   

    create proc aaa  
    as
    BEGIN TRAN A
    ....
    加锁操作最后 NOLOCK 操作
    COMMIT TRAN A
      

  2.   

    我找到了。使用事务来可以实现
    类似SQL77所说的create proc aa
    as
    --事务设置
    SET TRANSACTION ISOLATION LEVEL 事务的类型
    --事务开始
    begin tran
    -执行的操作数据库内容


    --事务结束
    commit tran我使用的类型是:REPEATABLE READ
    指定语句不能读取已由其他事务修改但尚未提交的行,并且指定,其他任何事务都不能在当前事务完成之前修改由当前事务读取的数据。对事务中的每个语句所读取的全部数据都设置了共享锁,并且该共享锁一直保持到事务完成为止。这样可以防止其他事务修改当前事务读取的任何行。其他事务可以插入与当前事务所发出语句的搜索条件相匹配的新行。如果当前事务随后重试执行该语句,它会检索新行,从而产生幻读。由于共享锁一直保持到事务结束,而不是在每个语句结束时释放,所以并发级别低于默认的 READ COMMITTED 隔离级别。此选项只在必要时使用。
    事务类型参考
    http://msdn.microsoft.com/zh-cn/library/ms173763.aspx
      

  3.   

    Application Locks
    ......EXEC sp_getapplock 'ProcLock', 'Exclusive', 'session', 'ProcUserRole'
    EXEC MySpecialProc <parameter list>
    EXEC sp_releaseapplock 'ProcLock', 'session'--SQL 2005 技术内幕