mssql에서 begin tran 사용시 궁금한점입니다. 0 2 1,386

by alues [SQL Query] [2017.11.28 10:02:58]


오라클은 명령어를 날리고 commit 또는 rollback을 사용하게 되는데요

예를 들어서 insert든 update든 명령을 사용했을때 조회는 되더라고요

로우락이 걸려도 테이블락은 걸리는경우가 잘없던데(이부분은 자세히는 모릅니다 ㅠㅠ)

근데 mssql에서도 중요한 작업을 할때 한번씩 begin tran을 쓰면 auto commit이 안되고

수동으로 commit 또는 rollback을 해주면 되던데

문제는 테이블락이 걸려버리더라고요 제가 작업을 할때 다른곳에서 조회를 하면

조회가 안되어버리는거죠

이걸 오라클 처럼 방지할수있는게 있을까요?

MSSQL 2005버전 사용하고 있습니다.

by 마농 [2017.11.28 11:03:08]

에러가 안나게 하는 방법은 있습니다.
SELECT 할 때 FROM 테이블 뒤에 WITH(격리수준) 옵션을 주면 됩니다.
옵션 사용은 작업하는 쪽이 아닌 조회하는 쪽에서 주는 것입니다.
- WITH(NOLOCK)      - 테이블 락과 관계없이 커밋되지 않은 변경중인 데이터까지 보임
- WITH(UNCOMMITTED) - nolock 과 동일
- WITH(READPAST)    - 커밋되지 않은 변경중인 데이터는 제외하고 나머지만 데이터만 보임
단 오라클과는 동작방식이 다릅니다.
오라클은 변경중인 데이터가 있어도 그 데이터의 변경전 이미지를 보여줍니다.
 


by alues [2017.11.28 11:26:53]

작업하는쪽에서 하는건 없는가보네요. 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입