SQL Server 2008과 관리 스튜디오를 사용하고 있습니다. 많은 행을 생성하는 쿼리를 실행했습니다. 빨간색 취소 버튼을 눌러 취소하려고했는데 10 분 동안 멈추지 않았습니다. 보통 3 분 이내에 멈 춥니 다.
이유는 무엇이며 즉시 중지하려면 어떻게해야합니까?
SQL Server 2008과 관리 스튜디오를 사용하고 있습니다. 많은 행을 생성하는 쿼리를 실행했습니다. 빨간색 취소 버튼을 눌러 취소하려고했는데 10 분 동안 멈추지 않았습니다. 보통 3 분 이내에 멈 춥니 다.
이유는 무엇이며 즉시 중지하려면 어떻게해야합니까?
답변:
이유는 무엇일까요
주의 가 서버에 도달하여 처리 될 수 있는 경우 쿼리 취소가 즉시 이루어 집니다. 쿼리는 취소 가능한 상태 여야하며, SQLCLR에서 웹 서비스 호출과 같은 특정 작업을 수행하는 경우를 제외하고 거의 항상 참입니다. 주의가 서버에 도달 할 수없는 경우 일반적으로 스케줄러 과부하 때문입니다.
그러나 쿼리가 롤백해야하는 트랜잭션의 일부인 경우 롤백을 중단 할 수 없습니다. 10 분이 걸리면 10 분이 걸리며 할 수있는 일이 없습니다. 서버를 다시 시작해도 도움이되지 않으며 복구가 롤백을 완료해야하므로 시작 시간이 더 길어집니다.
귀하의 사례에 적용 되는 구체적인 이유에 대해 답하려면 직접 조사해야합니다.
sp_who2 'active'
CPUTime 및 DiskIO 아래의 값을 확인하십시오 . 상대적으로 큰 값을 갖는 프로세스의 SPID에 유의하십시오.
kill {SPID value}
먼저 아래 명령을 실행하십시오.
sp_who2
그 후 위의 명령에서 얻은 SPID로 아래 명령을 실행하십시오.
KILL {SPID value}
이것은 일종의 어리석은 대답이지만 적어도 내 경우에는 안정적으로 작동합니다. Management Studio에서 "Cancel Executing Query"가 쿼리를 중지하지 않으면 현재 SQL 문서를 닫기 위해 클릭합니다. 쿼리를 취소 할 것인지 묻는 메시지가 표시되고 예라고 말하고 몇 초 후에 실행이 중지됩니다. 그 후 닫기 전에 문서를 저장할 것인지 묻습니다. 이 시점에서 취소를 클릭하여 문서를 열어두고 작업을 계속할 수 있습니다. 뒤에서 무슨 일이 일어나고 있는지 모르겠지만 작동하는 것 같습니다.
취소하고 그 실행을 본다면
sp_who2 'active'
(활동 모니터는 이전 SQL Server 2000 FYI에서 사용할 수 없습니다.)
죽이려는 SPID를 찾으십시오. 예 : 81
Kill 81
sp_who2 'active' 다시 실행하면 잠자고 있음을 알게 될 것입니다 ... 롤백
STATUS를 얻으려면 KILL을 다시 실행하십시오.
Kill 81
그러면 다음과 같은 메시지가 표시됩니다.
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
키보드 단축키 ALT+ Break를 사용 하여 쿼리 실행을 중지 할 수 있습니다 . 그러나 이것이 모든 경우에 성공하는 것은 아닙니다.
--Find Session Id for respective all running queries
SELECT text, getdate(),*
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
---Kill specific session
kill 125
나는 오랫동안 똑같은 고통을 겪어 왔습니다. 특히 원격 서버 (느릴 수 있음)에 연결되어 있거나 네트워크 연결이 불량 할 때 발생합니다. 나는 마이크로 소프트가 정답이 무엇인지 알고 있는지 의심 스럽다.
그러나 나는 해결책을 찾으려고 노력했기 때문에. 단 1 명의 평신도 접근 방식
"쿼리가 현재 실행 중입니다. 쿼리를 취소 하시겠습니까?"
"예"를 클릭하십시오.
잠시 후이 쿼리를 저장할지 여부를 묻습니다.
"취소"를 클릭하십시오.
그리고 그것을 게시하면 스튜디오가 다시 안정적으로 쿼리를 실행할 수 있습니다.
백그라운드에서 수행하는 작업은 연결로 쿼리 창 연결을 끊는 것입니다. 따라서 쿼리를 다시 실행하려면 원격 서버에 다시 연결하는 데 시간이 걸립니다. 그러나 저를 믿으십시오.이 절충안은 영원 토록 작동하는 타이머를 보는 고통보다 훨씬 낫습니다.
추신 : 이것은 나에게도 효과가 있습니다. !!!