[MS-SQL] 프로시저가 동시 실행 방지

상황에 따라 베타적으로 프로시저를 실행시켜야 할때가 있다.

그럴때 프로시저 내부에 간단하게 추가하여 동시에 실행되는 경우를 방지해보자.

--프로시저 본문

BEGIN TRAN
 
EXEC sp_getapplock @Resource='프로시저명', @LockMode='Exclusive'

--지지고 볶을 SQL
--.....
--.....

EXEC sp_releaseapplock @Resource='프로시저명'
 
COMMIT TRAN

구문을 보면 짐작 하시겠지만

지지고 볶을 구문이 실행되는 동안 전체 Lock을 걸어 버리는 방법이다.

가령 순차적으로 대기표를 발급해줘야 한다면

Lock을 걸지않았을 경우

아주 근소한 차이로

같은 대기표가 발급될 가능성이 있기때문이다.