오류를 올바르게 기록하지 않는 것으로 보이는 저장 프로 시저가 있습니다.TSQL 시도 및 캐치 catch하지 않음
코드에 오류가 있지만 catch 블록이 적용되지 않는 것 같습니다.
try 블록은 상당히 길지만 오류 섹션은 간단하고 끝까지 올 수 있습니다. 그래서 나는 그것을 precis'd했습니다. proc 디렉토리가 실패
BEGIN TRY
insert into tbl_X
select * from #temp_tbl_Y
RETURN 1
END TRY
BEGIN CATCH
Insert Into ExtractsErrorLog
SELECT
getdate() as ErrorDate
,object_name(@@procid) as ProcedureName
,ERROR_NUMBER() as ErrorNumber
,ERROR_LINE() as ErrorLine
,ERROR_MESSAGE() as ErrorMessage
;
DECLARE @errormessage as varchar(max);
DECLARE @errorseverity as int;
DECLARE @errorstate as int;
set @errormessage = ERROR_MESSAGE();
set @errorseverity = ERROR_SEVERITY();
set @errorstate = ERROR_STATE();
RAISERROR (@errormessage,
@errorseverity,
@errorstate
);
END CATCH;
오류는 우리의 오랜 친구 이다 "열 이름이나 테이블 정의와 일치하지 않습니다 제공 값의 수." 나는 그 오류를 수정했다. - 그것은 어리석은 실수였다. 그러나 내 오류 로깅 프로세스가 작동하지 않는 것 같은데 왜 당황하고 있는가? No ExtractsErrorLog 테이블에 행이 삽입되지 않았다.
그것은 컴파일시 에러입니다,이 참조 : http://stackoverflow.com/questions/7286667/sql-try-catch-statement-not-handling-error- sql-server-2008 –
'ExtractsErrorLog' 테이블 정의를 게시 할 수 있습니까? – Lamak
감사합니다 이반 - 그건 많은 의미가 있습니다 - 그리고 그 스레드는 해결 방법을 제공합니다. 그것을 놓쳐서 미안 하 고 재 게시. 그 catch가 컴파일을 잡지 못한다는 것을 읽었을 것입니다 - 그러나 이것은 컴파일 에러가 될 것이라고 꼬집지 않았습니다. 컴파일/재 컴파일 할 때 어떤 오류가 발생했는지 이해하기위한 안내서가 온라인에 있는지 알고있는 사람이 있습니까? 나는 이것이 왜 지금 하나가 될지를 알 수있다. 나는 테이블도 놓친다 고 생각한다. 그러나 나는 확신하고 싶다. 그리고 이것에 대한 세부 사항을 많이 찾지는 않았다. – DanBennett