xp_cmdshell을 사용하여 중단 문제가 있습니다.호출 된 exe가 종료 된 후 xp_cmdshell이 응답하지 않습니다.
실행 파일이 호출되어 작업을 수행하고 종료합니다. exe에서 ui 프롬프트로 인해 걸려 있지 않습니다. exe는 전혀 걸려 있지 않습니다. exe가 작업 관리자의 프로세스 목록에서 사라지고 EXE의 내부 로깅이 주 함수의 마지막 줄을 실행했음을 확인합니다.
xp_cmdshell을 호출해도 SQL에서 제어가 반환되지 않습니다. 해당 줄에 멈 춥니 다 (배치의 마지막 줄입니다). 과정을 죽이는 것은 효과가 없습니다. 중단 된 프로세스를 제거하기 위해 실제로 SQL Server를 다시 시작해야합니다.
중단은 처음 실행할 때만 발생합니다. 동일한 매개 변수를 갖는 프로 시저에 대한 후속 호출은 첫 번째 매개 변수가 작동하는 한 올바르게 작동하고 종료됩니다. SQL이 다시 시작되면 첫 번째 후속 호출이 다시 중단됩니다.
그것은 어떤 차이가있는 경우
, 나는 EXE에서 반환 값을 받기 위해 노력하고 있어요 - 내 SQL 절차가 끝납니다 :간부 @i = xp_cmdshell을 @cmd; return @i;
활동 모니터 과정을보고하는 PREEMPTIVE_OS_PROCESSOPS (어떤 다른 개발자 톱) 또는 PREEMPTIVE_OS_PIPEOPS (내 현재 테스트를보고 있어요 무엇을)
모든 아이디어의 대기 유형에 붙어있다?
'@ i'로 귀찮게하지 않으면 어떻게됩니까? 그냥'exec xp_cmdshell @cmd;'? –
시도하지 않았습니다. SQL Server를 다시 시작할 수있는 창을 기다려야합니다. 이 단일 프로세스를 죽이는 방법에 대한 아이디어가 있으므로 과감한 조치를 취할 필요가 없습니다. – Clyde