2016-12-07 4 views
0

바쁜 테이블에 SQL Server 테이블을 업데이트해야합니다. 그러나 변경 작업을 마칠 때까지 다른 프로세스가 해당 테이블에서 업데이트를 업데이트하거나 선택할 수 없도록하고 싶습니다.트랜잭션이 잠금을 해제 할 때까지 다른 프로세스에서 SQL Server 테이블 양식을 잠 그려면 어떻게합니까?

그러나 다른 모든 요청이 실패하지 않기를 바란다. 테이블을 잠금 해제 할 때까지 대기열에서 기다려야한다.

실행 중에 다른 사람이 그 시간을 업데이트하지 못하도록 다른 프로세스를 위해 테이블을 잠글 수있는 방법은 무엇입니까?

+1

사용을'보십시오. http://stackoverflow.com/a/5114082/2333499 – SqlZim

+0

매번 tablockx 힌트를 설정하는 대신 한 번 설정할 수있는 트랜잭션 격리 수준을 확인해야합니다 – Matt

답변

1

은 (TABLOCKX)`이

BEGIN TRANSACTION; 

-- Add exclusive lock on a table "i.e your_table" until the end of your transaction 

SELECT ... 
FROM your_table 
WITH (TABLOCKX) 

-- execute the update on "your_table" your the only one that can now 

-- Save the change you made during the transaction and release the table for other transactions 
COMMIT TRANSACTION; 
0

SQL-Server에서 테이블에 단독 잠금을 설정할 수 있습니다. 액세스가 필요한 다른 프로세스는 매달려있을 것입니다.