使用sp_getapplock时@Resource应该引用什么?

时间:2011-07-30 18:02:11

标签: sql sql-server tsql stored-procedures

sp_getapplock的MSDN文档说:

  

[@ Resource =]'resource_name'是一个指定名称的字符串   标识锁资源。

     

sp_getapplock创建的锁资源是在当前数据库中创建的   会话。每个锁资源由以下组合值标识:

     
      
  • 包含锁资源的数据库的数据库ID。
  •   
  • @DbPrincipal参数中指定的数据库原则。
  •   
  • @Resource参数中指定的锁名称。
  •   

我的问题:
1.'resource_name'是你组成的任何旧名字吗? 2.“resource_name”是否必须引用表名或存储过程名称或(命名)事务名称?

1 个答案:

答案 0 :(得分:2)

是的,这是你编造的任何旧名称。你可以说“sp_getapplock'小猫'”它将等待“小猫”锁被释放后再获取它并继续。您必须定义有意义的序列化访问权限的资源。

我不喜欢在表之后命名锁的想法,因为这意味着当SQL Server中没有任何内容(applock框架除外)强制执行时,它会对其他编码器进行序列化访问。换句话说,applock有点像交通信号灯。红灯没有什么固有的东西阻止你前进。这不是一个好主意。