如何在SQL Server中正在运行的作业中获取已执行的步骤信息?

时间:2012-05-10 03:00:06

标签: sql-server jobs

我们希望将作业历史记录记录到名为JobHistory的表中。我们的解决方案可能如下。

在作业中设置三个步骤。

第一步调用sp,它将开始时间,工作名称,工作ID和其他工作信息写入JobHistory

第二步调用sp进行实际工作。

第三步调用sp获取第二步的执行信息,如持续时间,错误信息,执行输出,并更新JobHistory的结束时间。

此解决方案有效吗?如果有效,我们如何在第三步中获得第二步的执行信息?

感谢。

1 个答案:

答案 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