我们希望将作业历史记录记录到名为JobHistory
的表中。我们的解决方案可能如下。
在作业中设置三个步骤。
第一步调用sp,它将开始时间,工作名称,工作ID和其他工作信息写入JobHistory
。
第二步调用sp进行实际工作。
第三步调用sp获取第二步的执行信息,如持续时间,错误信息,执行输出,并更新JobHistory
的结束时间。
此解决方案有效吗?如果有效,我们如何在第三步中获得第二步的执行信息?
感谢。
答案 0 :(得分:0)
你的方法对我来说很好。
在SQL-Server 2008+中,您可以使用系统视图获取有关持续时间,LastExecutionTime,逻辑读取和wrights的信息sys.dm_exec_procedure_stats
select eps.object_id, eps.last_execution_time, eps.execution_count, eps.last_worker_time/1000 as CPU,
eps.last_logical_writes as [Writes],
eps.last_logical_reads+eps.last_logical_writes as [AggIO]
from sys.dm_exec_procedure_stats eps
where eps.object_id=object_id(N'Your_procedure_name')
对于错误,在SQL-Server 2005+中,您可以使用函数ERROR_MESSAGE
来获取它BEGIN TRY
exec YOUR_PROCEDURE_NAME
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE()
END CATCH