作业自动调用存储过程出错,怎样记录详细的异常信息

作业自动调用存储过程出错,怎样记录详细的错误信息?
作业调用存储过程有时成功,有时失败,手工执行时每次都是成功的,所以不知道具体原因,只知道是哪个表插入失败。
存储过程内部有事务控制,所以事先把插入正式表的数据插入到临时表好像也会rollback吧?怎么记录下详细的错误原因或数据呢?插入前导出txt或excel?事务中是否可以?具体方法是什么?请指教?


存储过程简写,结构如下
create proc p_xxxx
as 
--开始事务
begin tran
--执行插入语句1
--事务
SELECT @err = @@ERROR
if @err<>0
begin
rollback tran
--记录下错误日志
insert t_auto_cwf(rq,zxbz,nr,bz)
values(@rq,@err,'执行插入语句1失败',@zyls)
return
end 
--执行插入语句2
--事务
SELECT @err = @@ERROR
if @err<>0
begin
rollback tran
--记录下错误日志
insert t_auto_cwf(rq,zxbz,nr,bz)
values(@rq,@err,'执行插入语句2失败',@zyls)
return
end 

commit tran

------解决思路----------------------
sql agent里面有明显的错误信息不?
------解决思路----------------------
如果是高版本SQL Server ,错误处理应该用try /catch搭配一系列的系统函数,
------解决思路----------------------
那应该是错误没有捕获的原因,你看看05有没有try/catch功能,我很久没搞05了
------解决思路----------------------
可以尝试按照这样的写法修改你的代码,并发那些错误信息插入一个实体表记录下来
BEGIN TRY
  SELECT 1/0 --This will raise a divide by zero error if not handled
END TRY
BEGIN CATCH
  SELECT ERROR_LINE() AS 'Line',
     ERROR_MESSAGE() AS 'Message',
     ERROR_NUMBER() AS 'Number',
     ERROR_PROCEDURE() AS 'Procedure',
     ERROR_SEVERITY() AS 'Severity',
     ERROR_STATE() AS 'State'
END CATCH;

------解决思路----------------------
有些过于复杂的东西, 放在程序里处理更合适。

你可以建立一个 Windows 服务程序, 然后定时调用这个存储过程, 如果有错误则记到日志文件里。 

当然, 你实在不愿意, 也可以像版主这样, 用try catch把错误信息放到一个错误日志表里。
------解决思路----------------------
引用:
可以尝试按照这样的写法修改你的代码,并发那些错误信息插入一个实体表记录下来
BEGIN TRY
  SELECT 1/0 --This will raise a divide by zero error if not handled
END TRY
BEGIN CATCH
  SELECT ERROR_LINE() AS 'Line',
     ERROR_MESSAGE() AS 'Message',
     ERROR_NUMBER() AS 'Number',
     ERROR_PROCEDURE() AS 'Procedure',
     ERROR_SEVERITY() AS 'Severity',
     ERROR_STATE() AS 'State'
END CATCH;

05 有 TRY CATCH