1

ジョブ履歴を という名前のテーブルに記録しますJobHistory。そして、私たちの解決策はおそらく次のとおりです。

ジョブに 3 つのステップを設定します。

ステップ 1 では、開始時刻、ジョブ名、ジョブ ID、およびその他のジョブ情報を に書き込む sp を呼び出しますJobHistory

ステップ 2 は、実際の作業を行う sp を呼び出します。

ステップ 3 は、期間、エラー メッセージ、実行中の出力など、ステップ 2 の実行情報を取得し、 の終了時刻を更新する sp を呼び出しますJobHistory

このソリューションは機能しますか? それが機能する場合、ステップ 3 でステップ 2 の実行情報を取得するにはどうすればよいでしょうか?

ありがとう。

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 に答える