1

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

在作业中设置三个步骤。

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

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

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

这个解决方案有效吗?如果有效,如何在第三步中获取第二步的执行信息?

谢谢。

4

1 回答 1

0

你的方法对我来说看起来不错。

在 SQL-Server 2008+ 中,您可以使用系统视图sys.dm_exec_procedure_stats获取有关 Duration、LastExecutionTime、逻辑读取和写入的信息

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 
于 2012-05-10T05:58:05.923 回答