sp_help_jobhistory (Transact-SQL)
適用対象: SQL Server
マルチサーバー管理ドメインに所属するサーバーのジョブに関する情報を提供します。
構文
sp_help_jobhistory
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @step_id = ] step_id ]
[ , [ @sql_message_id = ] sql_message_id ]
[ , [ @sql_severity = ] sql_severity ]
[ , [ @start_run_date = ] start_run_date ]
[ , [ @end_run_date = ] end_run_date ]
[ , [ @start_run_time = ] start_run_time ]
[ , [ @end_run_time = ] end_run_time ]
[ , [ @minimum_run_duration = ] minimum_run_duration ]
[ , [ @run_status = ] run_status ]
[ , [ @minimum_retries = ] minimum_retries ]
[ , [ @oldest_first = ] oldest_first ]
[ , [ @server = ] N'server' ]
[ , [ @mode = ] 'mode' ]
[ ; ]
引数
[ @job_id = ] 'job_id'
ジョブ ID 番号。 @job_id は uniqueidentifier で、既定値は NULL
です。
[ @job_name = ] N'job_name'
ジョブの名前。 @job_name は sysname で、既定値は NULL
です。
[ @step_id = ] step_id
ステップ識別番号。 @step_id は int で、既定値は NULL
です。
[ @sql_message_id = ] sql_message_id
ジョブの実行時に SQL Server によって返されるエラー メッセージの識別番号。 @sql_message_id は int で、既定値は NULL
です。
[ @sql_severity = ] sql_severity
ジョブの実行時に SQL Server で返されるエラー メッセージの重大度を指定します。 @sql_severity は int で、既定値は NULL
です。
[ @start_run_date = ] start_run_date
ジョブを開始した日付を指定します。 @start_run_date は int で、既定値は NULL
です。 @start_run_dateyyyyMMdd
形式で入力する必要があります。yyyy
は 4 文字の年、MM
は 2 文字の月名、dd
は 2 文字の日の名前です。
[ @end_run_date = ] end_run_date
ジョブが完了した日付を指定します。 @end_run_date は int で、既定値は NULL
です。 @end_run_dateyyyyMMdd
形式で入力する必要があります。yyyy
は 4 文字の年、MM
は 2 文字の月名、dd
は 2 文字の日の名前です。
[ @start_run_time = ] start_run_time
ジョブが開始された時刻。 @start_run_time は int で、既定値は NULL
です。 @start_run_time はフォーム HHmmss
に入力する必要があります。ここで、 HH
は 1 日の 2 文字の時間、 mm
は 1 日の 2 文字分、 ss
は 1 日の 2 文字の秒です。
[ @end_run_time = ] end_run_time
ジョブの実行が完了した時刻。 @end_run_time は int で、既定値は NULL
です。 @end_run_time は、 HHmmss
形式で入力する必要があります。ここで、 HH
は 1 日の 2 文字の時間、 mm
は 1 日の 2 文字分、 ss
はその日の 2 文字の秒です。
[ @minimum_run_duration = ] minimum_run_duration
ジョブを完了するのに必要な最小時間を指定します。 @minimum_run_duration は int で、既定値は NULL
です。 @minimum_run_duration はフォーム HHmmss
に入力する必要があります。ここで、 HH
は 1 日の 2 文字の時間、 mm
は 1 日の 2 文字分、 ss
は 1 日の 2 文字の秒です。
[ @run_status = ] run_status
job. の実行状態@run_status は int であり、これらの値のいずれかを指定できます。
値 | 説明 |
---|---|
0 |
Failed |
1 |
Succeeded |
2 |
再試行 (ステップのみ) |
3 |
取り消し済み |
4 |
進行中のメッセージ |
5 |
Unknown |
[ @minimum_retries = ] minimum_retries
ジョブの実行を再試行する最小回数。 @minimum_retries は int で、既定値は NULL
です。
[ @oldest_first = ] oldest_first
最初に最も古いジョブで出力を表示するかどうか。 @oldest_first は int で、既定値は 0
です。
0
は、最初に最新のジョブを表示します。1
は、最初に最も古いジョブを示します。
[ @server = ] N'server'
ジョブを実行したサーバーの名前を示します。 @server は sysname で、既定値は NULL
です。
[ @mode = ] 'mode'
SQL Server が結果セット内のすべての列 (FULL
) または列の概要 (SUMMARY
) を出力するかどうかを指定します。 @mode は varchar(7) で、既定値は SUMMARY
です。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
実際の列リストは、 @modeの値によって異なります。 最も包括的な列のセットを次の表に示します。 @mode が FULL
されると返されます。
列名 | データ型 | 説明 |
---|---|---|
instance_id |
int | 履歴エントリの識別番号。 |
job_id |
uniqueidentifier | ジョブ ID 番号。 |
job_name |
sysname | ジョブ名。 |
step_id |
int | ステップ識別番号 (ジョブ履歴の0 )。 |
step_name |
sysname | ステップ名 (ジョブ履歴のNULL )。 |
sql_message_id |
int | Transact-SQL ステップの場合、コマンドの実行中に発生した最新の Transact-SQL エラー番号。 |
sql_severity |
int | Transact-SQL ステップの場合、コマンドの実行中に発生した Transact-SQL エラーの重大度が最も高くなります。 |
message |
nvarchar(1024) | ジョブまたはステップの履歴メッセージ。 |
run_status |
int | ジョブまたはステップの結果。 |
run_date |
int | ジョブまたはステップの実行が開始された日付。 |
run_time |
int | ジョブまたはステップの実行が開始された時刻。 |
run_duration |
int | ジョブまたはステップの実行の経過時間 ( HHmmss 形式)。 |
operator_emailed |
nvarchar(20) | このジョブに関して電子メールで送信されたオペレーター (ステップ履歴の NULL )。 |
operator_netsent |
nvarchar(20) | このジョブに関するネットワーク メッセージが送信されたオペレーター (ステップ履歴に NULL )。 |
operator_paged |
nvarchar(20) | このジョブに関してページングされたオペレーター (ステップ履歴の NULL )。 |
retries_attempted |
int | ステップが再試行された回数 (ジョブ履歴の場合は常に 0)。 |
server |
nvarchar(30) | ステップまたはジョブを実行するサーバー。 常に (local )。 |
解説
sp_help_jobhistory
は、指定されたスケジュールされたジョブの履歴を含むレポートを返します。 どのパラメーターも指定しない場合は、レポートにはすべての定期ジョブの履歴が含まれます。
アクセス許可
この手順では EXECUTE
アクセス許可を付与できますが、これらのアクセス許可は SQL Server のアップグレード中にオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
SQLAgentUserRole データベース ロールのメンバーは、所有するジョブの履歴のみを表示できます。
例
A. ジョブのすべてのジョブ情報を一覧表示する
次の例では、 NightlyBackups
ジョブのすべてのジョブ情報を一覧表示します。
USE msdb;
GO
EXEC dbo.sp_help_jobhistory
@job_name = N'NightlyBackups';
GO
B. 特定の条件に一致するジョブの情報を一覧表示する
次の例では、失敗したジョブと失敗したジョブ ステップのすべての列とジョブ情報を出力し、エラー メッセージとして 50100
(ユーザー定義エラー メッセージ) と重大度を 20
します。
USE msdb;
GO
EXEC dbo.sp_help_jobhistory
@sql_message_id = 50100,
@sql_severity = 20,
@run_status = 0,
@mode = N'FULL';
GO