sp_purge_jobhistory (Transact-SQL)
ジョブの履歴レコードを削除します。
構文
sp_purge_jobhistory
{ [ @job_name = ] 'job_name' |
| [ @job_id = ] job_id }
[ , [ @oldest_date = ] oldest_date ]
引数
[ @job_name= ] 'job_name'
履歴レコードを削除するジョブの名前を指定します。job_name のデータ型は sysname で、既定値は NULL です。job_id または job_name のいずれかを指定する必要があります。両方を指定することはできません。注意 sysadmin 固定サーバー ロールのメンバまたは SQLAgentOperatorRole 固定データベース ロールのメンバは、job_name または job_id を指定せずに sp_purge_jobhistory を実行できます。sysadmin ユーザーがこれらの引数を指定しなかった場合、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴が oldest_date で指定された期間で削除されます。SQLAgentOperatorRole ユーザーがこれらの引数を指定しなかった場合、すべてのローカル ジョブのジョブ履歴が oldest_date で指定された期間で削除されます。
[ @job_id= ] job_id
削除するレコードを持つジョブの識別番号を指定します。job_id のデータ型は uniqueidentifier で、既定値は NULL です。job_id または job_name のいずれかを指定する必要があります。両方を指定することはできません。sysadmin ユーザーまたは SQLAgentOperatorRole ユーザーがこの引数を使用する方法の詳細については、@job_name の説明にある「注」を参照してください。[ @oldest_date = ] oldest_date
履歴の中で保持する最も古いレコードを指定します。oldest_date のデータ型は datetime で、既定値は NULL です。oldest_date を指定すると、sp_purge_jobhistory では、指定した値よりも前のレコードだけが削除されます。
戻り値
0 (成功) または 1 (失敗)
結果セット
なし
説明
sp_purge_jobhistory が正常に終了すると、メッセージが返されます。
権限
既定では、sysadmin 固定サーバー ロールまたは SQLAgentOperatorRole 固定データベース ロールのメンバだけが、このストアド プロシージャを実行できます。sysadmin のメンバは、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴を削除できます。SQLAgentOperatorRole のメンバは、すべてのローカル ジョブのジョブ履歴のみを削除できます。
SQLAgentUserRole のメンバや SQLAgentReaderRole のメンバなどの他のユーザーは、sp_purge_jobhistory に対する EXECUTE 権限が許可されている必要があります。このストアド プロシージャに対する EXECUTE 権限が許可されていると、これらのユーザーは自分が所有しているジョブの履歴だけを削除できます。
SQLAgentUserRole、SQLAgentReaderRole、および SQLAgentOperatorRole 固定データベース ロールは msdb データベースに格納されています。これらの権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。
例
A. 特定のジョブの履歴を削除する
次の例では、NightlyBackups という名前の履歴を削除します。
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
@job_name = N'NightlyBackups' ;
GO
B. すべてのジョブの履歴を削除する
注意 |
---|
すべてのジョブの履歴を削除できるのは、sysadmin 固定サーバー ロールのメンバと SQLAgentOperatorRole のメンバだけです。sysadmin ユーザーがパラメータを指定せずにこのストアド プロシージャを実行すると、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴が削除されます。SQLAgentOperatorRole ユーザーがパラメータを指定せずにこのストアド プロシージャを実行すると、すべてのローカル ジョブのジョブ履歴のみが削除されます。 |
次の例では、パラメータを指定せずにプロシージャを実行して、すべての履歴レコードを削除します。
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory ;
GO