728x90

DB LOCK이 걸려 KILL 을 한 이후에 실제 프로세스가 죽지 않고 상태가 "KILLED/ROLLBACK"으로 남아 있는 경우에 대한 포스트 중 괜찮은 내용이 존재해서 가져왔다.

 

참고 URL : https://blog.sqlauthority.com/2015/08/31/sql-server-spid-is-killedrollback-state-what-to-do-next/

 

SQL SERVER – SPID is KILLED/ROLLBACK state. What to Do Next? - SQL Authority with Pinal Dave

I always recall my fun days after talking to my friends and blog readers. Recently killed/rollback discussion came back when my close DBA friend called me for help. Our discussion was worth blogging.

blog.sqlauthority.com

 

 

 

프로세스가 죽지 않고 계속 위의 상태로 남아 있는 경우

 

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

+ Recent posts