2017-10-15 5 views
-1

여러 프로세스에 의해 액세스되는 방법을 고정하고, 도움을 드릴 것입니다 방법 -C 번호 -이 문제에 약간의 투쟁 해요

내가 다른 실행 교류 # 프로젝트 (의 .sln)가 원격 컴퓨터 - 그래서 그들은 같은 클래스의 다른 인스턴스를 만듭니다 .. 그들 모두는 동일한 DB에 연결되어 있고 동일한 SQL 트랜잭션을 실행하고 있습니다.

나는 데이터 "CanBeHandledByMachine (dalTestRequest, dalMachine, machineCanExecuteUITests)"다른 컴퓨터가 이미 DB에서 동일한 데이터를 가지고있는 경우 확인

을 확인하는 DB 메서드를 호출하는 방법 내부에 있습니다. 는하지만, 여전히,이 기계는 참으로 당신의 도움들에 대해 동일한 데이터, 잠금 객체 (뮤텍스) /이 경우 도움이되지 않습니다 물론 정적 클래스 ...

기다립니다있어 충돌이 :) 감사합니다 ,

+0

당신은 거래 및 격리 수준에 대해 알고 :

OUTPUT 절을 사용하여 UPDATE의 일부로서 행 (들)에 대한 배타적 잠금을 획득,이 일을하는 좋은 방법입니다 데이터베이스 수준? –

답변

1

공유 리소스, 즉 데이터베이스에서 잠금을 처리해야합니다. 당신이하고있는 일을 진술하지는 않지만 전형적인 시나리오는 어떤 처리를 할 레코드를 "주장하는 것"입니다.

일반적으로 테이블 행을 업데이트하면 (예 : 상태 열 -> '처리'이므로 더 이상 처리 할 필요가 있다고 플래그되지 않음) 호출 응용 프로그램에 관련된 열을 다시 선택합니다.

https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql