4
我正在實現內部沒有事務的存儲過程。實際上,它只會在特定的地點將時間縮短到最低限度。存儲過程的本質是,所以我只需要一次runinng。沒有事務的sp_getapplock
我試圖使用sp_getapplock,但很快發現它需要在事務中。
是否有其他的選擇,我可以鎖定整個程序,但沒有將其包含在事務中?
我正在實現內部沒有事務的存儲過程。實際上,它只會在特定的地點將時間縮短到最低限度。存儲過程的本質是,所以我只需要一次runinng。沒有事務的sp_getapplock
我試圖使用sp_getapplock,但很快發現它需要在事務中。
是否有其他的選擇,我可以鎖定整個程序,但沒有將其包含在事務中?
通過@LockOwner傳遞Session以獲得會話範圍鎖定;這並不需要一個事務在鎖定時處於活動狀態。
例如
EXEC @res = sp_getapplock @Resource = 'Lock ID', @LockOwner = 'Session', @LockMode = 'Exclusive';
..
code
..
EXEC @res = sp_releaseapplock @Resource = 'Lock ID';
不知道你的意思,你能張貼的例子嗎? – katit 2012-07-17 23:38:14
@katit,完成,見上面 – iruvar 2012-07-17 23:57:01
是的,這工作!將'@LockOwner ='Session''也添加到sp_releaseapplock中,否則會拋出錯誤 – katit 2012-07-18 00:03:50