2014-11-24 76 views
0

我有存儲過程需要一次運行一個(不應該同時運行)。sp_getApplock lockOwner值事務vs會話

對於這個我使用下面的存儲的過程

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

這一呼籲裏面有LockOwner設置爲「會議」和也有另一種被稱爲「交易」可能值。

我知道如果我選擇交易,我需要在交易中寫入存儲proc主體。

我搜查了兩者之間的差異,但沒有得到任何運氣。

任何人都可以請幫我,除了調用sp_getapplock內部之外,它們之間的區別是什麼?

我也會理解爲解決我的問題的最佳做法(防止從運行併發執行存儲過程)。

+0

作爲澄清,你爲什麼要限制一次存儲過程的執行?當多個用戶想要做同樣的事情會發生什麼?鎖的目標是什麼,防止什麼? – 2014-11-24 12:42:55

+0

@BerndLinde我需要創建和分配一個唯一的隨機數no由兩部分組成1)是隨機部分和2)是順序部分(例如ABD001,CDE002,DFD003 ....)。存儲過程的目的是生成這個隨機號碼。 – 2014-11-24 13:18:36

回答

0

我覺得SEQUENCE對象可能爲你工作好於解決方案和掃描器。它的行爲有點像沒有表格的標識列,並允許您以線程安全的方式生成隨機數的順序部分。