Sharingan,
저장 프로 시저 내의 단계가 시간 초과를 유발하지 않습니다. SP를 호출하는 클라이언트는 시간 초과 값을 가지며, SP가 이보다 더 오래 걸리면 "생각한"것이 잘못되었습니다. 그렇다고 SP가 잘못 설계되었거나 실제로 실패했음을 의미하지는 않습니다.
한 가지 방법은 로깅 테이블을 만들고 처음에는 저장 프로 시저에서이 테이블의 모든 행을 삭제합니다 (SP가 실행될 때마다 지워지는 TEMP 테이블입니다). 그런 다음 프로 시저의 각 단계 전에 'Starting employee ETL ...'과 같은 단계와 'Completed Employee ETL ...'단계를 사용하여 로깅 테이블에 행을 삽입하십시오.
각 단계마다 오류가 발생했는지 확인하고이 테이블에 오류 메시지를 쓸 수도 있습니다. 이것은 효과적으로 자신의 로그가됩니다.호출 프로세스가 제대로 설정 시간 제한 값이없는 경우
IF @@ERROR <> 0
BEGIN
-- Add Error_Message to your table
END
, 당신은 SP가 실제로 (로그를 검사하여) 종료 볼 수 있지만, 클라이언트는 실수로 시간 제한 값을 초과했기 때문에 뭔가 잘못 생각 . 클라이언트에서 시간 초과 오류가 발생해도 SQL Server는 작업을 진행할 수 없습니다.
예를 들어 SSMS에서 저장 프로 시저를 단독으로 실행할 수 있습니까? 이 방법을 사용하면 문제를 추적 할 수 있지만 SQL, Azure Logic App 또는 ETL 프로세스를 실행중인 모든 클라이언트를 구별하는 것이 중요합니다. SP에 전달 된 매개 변수를 조작하거나 시뮬레이션해야 할 수도 있지만 SSMS에서는 쉽게 수행 할 수 있습니다.
큰 SP를 여러 개의 작은 SP로 나누고 하나의 거대한 SP 호출 대신 ETL 클라이언트에 단계를 추가 할 수도 있습니다. 이로 인해 일시적인 오류 처리가 강제 실행될 수 있지만 상황에 따라 관리가 가능할 수 있습니다.
행운을 빈다.