sp_getApplock lockOwner值事务与会话

时间:2014-11-24 12:14:05

标签: sql stored-procedures

我的存储过程需要一次运行一个(不应该同时运行)。

为此,我使用下面存储的proc

exec @result = sys.sp_getapplock 
@Resource='Employee', @LockMode = 'Exclusive', @LockOwner= 'session', @LockTimeout = 0

在该通话中,LockOwner设置为' 会话'还有另一个可能的值叫做' 交易'。

我知道如果我选择事务,我需要在事务中编写存储的proc主体。

我搜索了两者之间的差异,但没有得到任何运气。

除了在转换中调用sp_getapplock之外,有人可以帮助我解决它们之间的区别吗?

我还要感谢解决我的问题的任何最佳实践(防止从并发执行中运行存储过程。)

1 个答案:

答案 0 :(得分:0)

我认为SEQUENCE对象可能比applock解决方案更适合你。它的作用有点像没有表的标识列,并允许您以线程安全的方式生成随机数的顺序部分。