2

私は実際に SQL 2005 で SP に取り組んでいます。SP を使用してジョブを作成し、特定の時間にスケジュールしています。データベースが非常に大きいため、これらのジョブは完了するまでに少なくとも 5 ~ 10 分かかります。しかし、ジョブのステータスを確認する方法がわかりません。正常に完了したか、実行中にエラーが発生したかを知りたいです。例外では、適切なエラー コードも返します。しかし、このエラーコードを確認できる場所がわかりません。

4

3 に答える 3

3

これは私が見つけることができるものです、多分それはあなたの問題を解決します:

  1. 現在のジョブ アクティビティを取得するための SP。
 exec msdb.dbo.sp_help_jobactivity  @job_id = (your job_id here)

この SP を実行し、結果を一時テーブルに配置して、そこから必要な結果を取得できます。

それ以外の場合は、次の表をご覧ください。

  • msdb.dbo.sysjobアクティビティ

  • msdb.dbo.sysjobhistory

以下を実行して、これらのテーブル間の関連付けを確認します。

exec sp_helptext sp_help_jobactivity

于 2008-09-24T06:48:10.667 に答える
0

ここからより良いコードを取得しました

Use msdb
go

select distinct j.Name as "Job Name", j.description as "Job Description", h.run_date as LastStatusDate, 
case h.run_status 
when 0 then 'Failed' 
when 1 then 'Successful' 
when 3 then 'Cancelled' 
--when 4 then 'In Progress' 
end as JobStatus
from sysJobHistory h, sysJobs j
where j.job_id = h.job_id and h.run_date = 
(select max(hi.run_date) from sysJobHistory hi where h.job_id = hi.job_id)
order by 1
于 2009-09-30T13:04:47.443 に答える
0

--Query analizer にコピーし、適切にフォーマットして、簡単に理解できるようにします --クエリを使用してタスク (ジョブ) を実行するには exec msdb.dbo.sp_start_job @job_name ='ジョブ名',@server_name = サーバー名 -- 実行後@JobId を varchar(36) として宣言 @JobId = job_id を sysjobs から選択 name = 'Your Job Name' @JobStatus を int として宣言 @JobStatus = -1 While @JobStatus <= -1 Begin -- ジョブに応じて TimeDelay を指定します @JobStatus = isnull(run_status ,-1) from sysjobactivity JA,sysjobhistory JH where JA.job_history_id = JH.instance_id and JA.job_id = @JobId End select @JobStatus

null = 実行中 1 = 正常に終了 0 = エラーで終了

-- ジョブが終了すると、結果が得られます

于 2009-02-21T08:31:07.403 に答える