次の方法で共有


sp_purge_jobhistory (Transact-SQL)

ジョブの履歴レコードを削除します。

トピック リンク アイコン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 権限が許可されていると、これらのユーザーは自分が所有しているジョブの履歴だけを削除できます。

SQLAgentUserRoleSQLAgentReaderRole、および 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