sp_purge_jobhistory (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
SQL Server エージェント サービス内のジョブの履歴レコードを削除します。
構文
sp_purge_jobhistory
[ [ @job_name = ] N'job_name' ]
[ , [ @job_id = ] 'job_id' ]
[ , [ @oldest_date = ] oldest_date ]
[ ; ]
引数
[ @job_name = ] N'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'
レコードを削除するジョブのジョブ 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
が正常に完了すると、メッセージが返されます。
このストアド プロシージャは、azure SQL Database 用の Azure Elastic Jobs サービスの同様のオブジェクトとsp_purge_jobhistory
の名前を共有。 エラスティック ジョブのバージョンについては、「 jobs.sp_purge_jobhistory (Azure エラスティック ジョブ)」を参照してください。
アクセス許可
既定では、このストアド プロシージャを実行できるのは、 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