【问题标题】:How to get a executed step information in a running job in SQL Server?如何获取 SQL Server 正在运行的作业中执行的步骤信息?
【发布时间】:2012-05-10 03:00:05
【问题描述】:

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

在作业中设置三个步骤。

第一步调用sp,它将开始时间、作业名称、作业id等作业信息写入JobHistory

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

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

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

谢谢。

【问题讨论】:

    标签: sql-server jobs


    【解决方案1】:

    我觉得你的方法不错。

    在 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多