如文章标题,请教大家是如何是实现的,提前说声谢谢~

解决方案 »

  1.   


    我想在数据库中实现,问题的关键是,如何确定该存储过程是否正在被某个session调用,特别是两个或多个用户几乎在同一时刻访问该存储过程时,如何控制只限一位用户访问?
      

  2.   

    用一个特殊临时表实现
    create proc pro_test
    as
    if object_id('tempdb..abc123456ce')is not null  return
    --执行你的操作--连接操作中使用
    create table tempdb..abc123456ce(ID int)
    exec pro_test
    drop table tempdb..abc123456ce
      

  3.   


    is not null  
    改成
    is null
    试下
      

  4.   

    使用应用程序锁。《Microsoft SQL Server 2005技术内幕:存储引擎》第八章,自己研究吧:
    ......
    举例来说,假设用户有一个存储过程且每次只有一个用户执行。属于ProcUserRole 数据库角色的任何用户都可以通过sp_getapplock 存储过程来获取一个特殊锁(告诉其他进程:已经有人在使用该存储过程了)以锁定这个存储过程。当存储过程执行完毕以后,可以使用sp_releaseapplock 来释放这个锁:EXEC sp_getapplock 'ProcLock', 'Exclusive', 'session', 'ProcUserRole'EXEC MySpecialProc <parameter list>EXEC sp_releaseapplock 'ProcLock', 'session'
    ......
      

  5.   

    对应用程序设置锁:sp_getapplock
    具体例子自己网上找或者msdn注意:如果其他事物执行时也当创建获取相同的应用程序锁.