2015-02-03 1 views
0

SQL 저장 프로 시저 "StPro"호출 할 수있는, 그것은 웹 서비스에 의해 호출됩니다.
나는 언제나 하나 이상의 "StPro"작업을하지 않기를 바란다.
아이디어가 필요합니다. "StPro"에서 다른 "StPro"가 작업을하지 못하게하려면 어떻게해야합니까? "StPro"가 이미 작동 중일 때 "StPro"가 시작되면 값을 1로 설정하고, 끝나면 값을 이미 1로 설정 한 경우 값을 0으로 설정하는 값이 테이블에서 시도됩니다. 아무것도하지 않고 끝납니다.
Problam은 두 개의 "StPro"를 동시에 시작하면 시간이 지나면 두 번째 "StPro"가 시작되지 않도록 값이 변하지 않습니다. 감사합니다.sql 디자인 이중 procceesing 방지

+0

이것은 대개 잘못된 디자인입니다. 여러 복사본을 실행할 때 문제를 일으키는 다른 오류로 인해 한 번에 하나의 실행으로 제한하려고 시도하거나 일종의 대기열 시스템 및 일부 배경이어야합니다. 작업 (즉, 서비스 브로커)은 대기열에서 제외 작업 및 대량 작업을 처리합니다. –

+0

대부분, 나는 성능 에세이로 인해 하나 이상을 동시에 원하지 않는다. 그러나 여러 복사본이 실행되기 때문에 오류가 발생합니다. 일어날 일이 아니기 때문에 나는 마음을 그만 두었다. – Ranch

+0

테이블 레벨 잠금? – Marichyasana

답변

1

Table(ID int)을 입력하고 해당 테이블에 PK을 입력하고 저장 프로 시저 상단에 insert into Table values(1)을 추가하십시오. 그리고 proc의 끝에서 delete * from Table. 오류가 발생하면 Try Catch 블록을 추가하고 proc에서 리턴하십시오.

+0

그게 정확히 내가 뭘하는지, problam은 동시에 두 가지를 호출하는 경우, 그것을 시작하지 못하게하기 위해 테이블을 빠르게 변경하지 않습니다. – Ranch

+0

불가능합니다. 표의 값을 업데이트하고 있습니다. 이 예에서는 PK에 삽입됩니다. 테이블에 두 번 값 (1)을 추가 할 수 없기 때문에 테이블에 행 vith 값 (1)이있는 동안 해당 프로 시저를 실행할 수 없습니다. –

+0

죄송합니다. 정확하게 설명하지 않습니다. 시도해 볼게. 감사합니다. – Ranch