sp_purge_jobhistory (Transact-SQL)
ジョブの履歴レコードを削除します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで) |
構文
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
関連項目
参照
sp_help_jobhistory (Transact-SQL)