エラーを正しく記録していないように見えるストアド プロシージャがあります。
コードはエラーになっていますが、catch ブロックが有効になっていないようです。
try ブロックはかなり長いですが、エラー セクションはシンプルで最後にあるので、正確に説明しました。
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;
proc が失敗するエラーは、古くからの友人である「列名または指定された値の数がテーブル定義と一致しません」です。私はそのエラーを修正しました - それはばかげた怠惰な間違いでした - しかし、エラーログプロセスが機能していないように見える理由に困惑しています.ExtractsErrorLogテーブルに行が挿入されていません.