sp_purge_jobhistory (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Transact-SQL 構文表記規則

構文

  
sp_purge_jobhistory   
   {   [ @job_name = ] 'job_name' |   
     | [ @job_id = ] job_id }  
   [ , [ @oldest_date = ] oldest_date ]  

引数

[ @job_name = ] 'job_name' 履歴レコードを削除するジョブの名前。 job_namesysname で、既定値は 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_iduniqueidentifier で、既定値は NULL です。 job_idまたはjob_nameを指定する必要がありますが、両方を指定することはできません。 sysadmin または SQLAgentOperatorRole ユーザーがこの引数を使用する方法については、@job_nameの説明のメモを参照してください。

[ @oldest_date = ] oldest_date 履歴に保持する最も古いレコード。 oldest_datedatetime で、既定値は 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)