728x90
DB LOCK이 걸려 KILL 을 한 이후에 실제 프로세스가 죽지 않고 상태가 "KILLED/ROLLBACK"으로 남아 있는 경우에 대한 포스트 중 괜찮은 내용이 존재해서 가져왔다.
참고 URL : https://blog.sqlauthority.com/2015/08/31/sql-server-spid-is-killedrollback-state-what-to-do-next/
프로세스가 죽지 않고 계속 위의 상태로 남아 있는 경우
1. 롤백이 완료 될 때까지 기다린다. 단, SPID는 CPU, 메모리, IO 열의 크기변화를 보여야 함. (대규모 작업은 시간이 오래 걸릴 수 있다.)
2. SPID가 CPU, 메모리 및 IO 열에 변경 사항을 표시하지 않는 다면 아무 작업도 수행하지 않는 것이다. 프로세스가 다른 컴퓨터에서 시작된 경우 작업 관리자를 사용하여 관련 프로세스를 종료하는 경우 도움이 될 수 있음.
아래 쿼리로 CPU, 메모리 및 IO 변경 사항 확인 가능.
SELECT spid
,kpid
,login_time
,last_batch
,status
,hostname
,nt_username
,loginame
,hostprocess
,cpu
,memusage
,physical_io
FROM sys.sysprocesses
WHERE cmd = 'KILLED/ROLLBACK'
3. SQL 재시작.
문제는 1번의 경우는 기다린다고 쳐도 내용을 많이 찾아보니 보통의 경우 아무리 대용량의 작업도 하루 이상의 시간이 걸리기는 힘들다는 것이 공통 된 의견이며, 대부분의 문제 발생이 Linked Server 사용 시 발생하는 것 같았다. 해결한 분의 글을 보니 특정 엑셀 파일을 붙잡고 있어서 종료가 되지 않았다는 글도 봤다.
좀비 프로세스가 됐다면 답은 SQL 서버를 재시작 하거나, 관련 프로세스도 같이 종료 되도록 해야한다.
728x90
'개발및업무 > SQL' 카테고리의 다른 글
DB 백업 테이블 생성 방법 (0) | 2022.04.27 |
---|---|
MS-SQL 과 Oracle(오라클) UPDATE 구문 차이 (0) | 2022.02.10 |
[SQLite] SQLite DB의 Table 데이터 CSV 파일 생성 방법 (0) | 2021.09.27 |
[MS-SQL] ID 사양 초기화 방법 (IDENTITY 값 초기화) (0) | 2021.09.13 |
[MS-SQL]DATABASE TABLE 별 ROW COUNT 확인 (0) | 2017.03.17 |