次の方法で共有


sp_help_jobhistory (Transact-SQL)

適用対象: SQL Server

マルチサーバー管理ドメインに所属するサーバーのジョブに関する情報を提供します。

Transact-SQL 構文表記規則

構文

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_iduniqueidentifier で、既定値は NULL です。

[ @job_name = ] N'job_name'

ジョブの名前。 @job_namesysname で、既定値は NULL です。

[ @step_id = ] step_id

ステップ識別番号。 @step_idint で、既定値は NULL です。

[ @sql_message_id = ] sql_message_id

ジョブの実行時に SQL Server によって返されるエラー メッセージの識別番号。 @sql_message_idint で、既定値は NULL です。

[ @sql_severity = ] sql_severity

ジョブの実行時に SQL Server で返されるエラー メッセージの重大度を指定します。 @sql_severityint で、既定値は NULL です。

[ @start_run_date = ] start_run_date

ジョブを開始した日付を指定します。 @start_run_dateint で、既定値は NULL です。 @start_run_dateyyyyMMdd形式で入力する必要があります。yyyyは 4 文字の年、MMは 2 文字の月名、ddは 2 文字の日の名前です。

[ @end_run_date = ] end_run_date

ジョブが完了した日付を指定します。 @end_run_dateint で、既定値は NULL です。 @end_run_dateyyyyMMdd形式で入力する必要があります。yyyyは 4 文字の年、MMは 2 文字の月名、ddは 2 文字の日の名前です。

[ @start_run_time = ] start_run_time

ジョブが開始された時刻。 @start_run_timeint で、既定値は NULL です。 @start_run_time はフォーム HHmmssに入力する必要があります。ここで、 HH は 1 日の 2 文字の時間、 mm は 1 日の 2 文字分、 ss は 1 日の 2 文字の秒です。

[ @end_run_time = ] end_run_time

ジョブの実行が完了した時刻。 @end_run_timeint で、既定値は NULL です。 @end_run_time は、 HHmmss形式で入力する必要があります。ここで、 HH は 1 日の 2 文字の時間、 mm は 1 日の 2 文字分、 ss はその日の 2 文字の秒です。

[ @minimum_run_duration = ] minimum_run_duration

ジョブを完了するのに必要な最小時間を指定します。 @minimum_run_durationint で、既定値は NULL です。 @minimum_run_duration はフォーム HHmmssに入力する必要があります。ここで、 HH は 1 日の 2 文字の時間、 mm は 1 日の 2 文字分、 ss は 1 日の 2 文字の秒です。

[ @run_status = ] run_status

job. の実行状態@run_statusint であり、これらの値のいずれかを指定できます。

説明
0 Failed
1 Succeeded
2 再試行 (ステップのみ)
3 取り消し済み
4 進行中のメッセージ
5 Unknown

[ @minimum_retries = ] minimum_retries

ジョブの実行を再試行する最小回数。 @minimum_retriesint で、既定値は NULL です。

[ @oldest_first = ] oldest_first

最初に最も古いジョブで出力を表示するかどうか。 @oldest_firstint で、既定値は 0 です。

  • 0 は、最初に最新のジョブを表示します。
  • 1 は、最初に最も古いジョブを示します。

[ @server = ] N'server'

ジョブを実行したサーバーの名前を示します。 @serversysname で、既定値は NULL です。

[ @mode = ] 'mode'

SQL Server が結果セット内のすべての列 (FULL) または列の概要 (SUMMARY) を出力するかどうかを指定します。 @modevarchar(7) で、既定値は SUMMARY です。

リターン コードの値

0 (成功) または 1 (失敗)。

結果セット

実際の列リストは、 @modeの値によって異なります。 最も包括的な列のセットを次の表に示します。 @modeFULLされると返されます。

列名 データ型 説明
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