我们希望将作业历史记录到一个名为 的表中JobHistory
。我们的解决方案可能如下。
在作业中设置三个步骤。
第一步调用sp,它将开始时间,作业名称,作业ID和其他作业信息写入JobHistory
.
第二步调用执行实际工作的 sp。
第三步调用sp,获取第二步的执行信息,如持续时间、错误信息、执行输出、更新结束时间JobHistory
。
这个解决方案有效吗?如果有效,如何在第三步中获取第二步的执行信息?
谢谢。
我们希望将作业历史记录到一个名为 的表中JobHistory
。我们的解决方案可能如下。
在作业中设置三个步骤。
第一步调用sp,它将开始时间,作业名称,作业ID和其他作业信息写入JobHistory
.
第二步调用执行实际工作的 sp。
第三步调用sp,获取第二步的执行信息,如持续时间、错误信息、执行输出、更新结束时间JobHistory
。
这个解决方案有效吗?如果有效,如何在第三步中获取第二步的执行信息?
谢谢。
你的方法对我来说看起来不错。
在 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