개요
구성환경
SQL Server 2019 / Windows Server 2016
LOCK 잠금및 해제
세션1) 테이블 조회
1> select * from test1 2> go id age name --------------- ----------- -------------------- cat1 1 mycat1 cat2 2 mycat2 cat3 3 mycat3 (3 rows affected) 1> |
세션1) 트랜잭션 시작 및 트랜잭션 조회
> begin tran : 트랜잭션 시작
> dbcc opentran : 활성 트랜잭션 조회
1> begin tran => 트랜잭션 시작 2> insert into test1 values ('cat4',4,'mycat4') 3> go (1 rows affected) 1> select * from test1; 2> go id age name --------------- ----------- -------------------- cat1 1 mycat1 cat2 2 mycat2 cat3 3 mycat3 cat4 4 mycat4 (4 rows affected) 1> dbcc opentran => 활성 트랜잭션 조회 2> go 데이터베이스 'catdb'의 트랜잭션 정보입니다. 가장 오래 전에 활성화된 트랜잭션: SPID(서버 프로세스 ID): 52 UID(사용자 ID) : -1 이름 : user_transaction LSN : (37:912:46) 시작 시간 : 02 14 2020 10:58:23:153AM SID : 0xba295b01fd2d664bad43fe602c2ba464 DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오. 1> |
세션2) 테이블 조회
1> select * from test1 => table1에 LOCK 걸기전에는 정상적으로 테이블이 조회됨 >>> 세션1 에서 배탁락 설정 <<< 1> select * from test1 => 테이블이 조회되지 않고 이상태에서 LOCK이 해제되기 전까지 대기상태 |
관리자세션) Lock 조회
> exec sp_lock : lock 조회
> sp_who2 spid : spid의 데이터베이스엔진 현재 사용자, 세션 및 프로세스에 대 한 정보를 제공
> select * from [db_name].[schema].sysobjects where id = ObjID : Object ID를 이용하여 락이 걸린 테이블명 조회
세션1) 트랜잭션 커밋
1> commit tran 2> dbcc opentran 3> go 열려 있는 활성 트랜잭션이 없습니다. DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오. 1> |
관리자세션) 강제적으로 세션 Kill (comit tran을 기다리지 않고 강제로 세션 kill)
Syntax) kill spid
1> kill 52 2> go 1> |
'DBMS > MS-SQL' 카테고리의 다른 글
[MS-SQL] 복제 - 트랜잭션 게시 (0) | 2020.02.18 |
---|---|
[MS-SQL] 복제 - 스냅샷 게시 (0) | 2020.02.18 |
[MS-SQL] master 데이터베이스 복원 (0) | 2020.02.13 |
[MS-SQL] 데이터베이스 복원 - 로그 파일 복원 (0) | 2020.02.13 |
[MS-SQL] 데이터베이스 복원 - 지정 시간 복구 (0) | 2020.02.13 |