次の方法で共有


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 のいずれかを指定する必要があります。両方を指定することはできません。

    ms175044.note(ja-jp,SQL.90).gifメモ :
    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 では、指定した値よりも前のレコードだけが削除されます。

結果セット

なし

解説

sp_purge_jobhistory が正常に終了すると、メッセージが返されます。

権限

既定では、sysadmin 固定サーバー ロールまたは SQLAgentOperatorRole 固定データベース ロールのメンバだけが、このストアド プロシージャを実行できます。sysadmin のメンバは、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴を削除できます。SQLAgentOperatorRole のメンバは、すべてのローカル ジョブのジョブ履歴のみを削除できます。

SQLAgentUserRole のメンバや SQLAgentReaderRole のメンバなどの他のユーザーは、sp_purge_jobhistory に対する EXECUTE 権限が許可されている必要があります。このストアド プロシージャに対する EXECUTE 権限が許可されていると、これらのユーザーは自分が所有しているジョブの履歴だけを削除できます。

SQLAgentUserRoleSQLAgentReaderRole、および SQLAgentOperatorRole 固定データベース ロールは msdb データベースに格納されています。これらの権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。

戻り値

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

A. 特定のジョブの履歴を削除する

次の例では、NightlyBackups という名前の履歴を削除します。

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory
    @job_name = N'NightlyBackups' ;
GO

B. すべてのジョブの履歴を削除する

ms175044.note(ja-jp,SQL.90).gifメモ :
すべてのジョブの履歴を削除できるのは、sysadmin 固定サーバー ロールのメンバと SQLAgentOperatorRole のメンバだけです。sysadmin ユーザーがパラメータを指定せずにこのストアド プロシージャを実行すると、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴が削除されます。SQLAgentOperatorRole ユーザーがパラメータを指定せずにこのストアド プロシージャを実行すると、すべてのローカル ジョブのジョブ履歴のみが削除されます。

次の例では、パラメータを指定せずにプロシージャを実行して、すべての履歴レコードを削除します。

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory ;
GO

参照

関連項目

sp_help_job (Transact-SQL)
sp_help_jobhistory (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
GRANT (オブジェクトの権限の許可) (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手