次の方法で共有


sp_purge_jobhistory (Transact-SQL)

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

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)

トピック リンク アイコン 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

関連項目

参照

sp_help_job (Transact-SQL)

sp_help_jobhistory (Transact-SQL)

システム ストアド プロシージャ (Transact-SQL)

GRANT (オブジェクトの権限の許可) (Transact-SQL)