sp_purge_jobhistory (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
SQL Server エージェント サービス内のジョブの履歴レコードを削除します。
構文
sp_purge_jobhistory
{ [ @job_name = ] 'job_name' |
| [ @job_id = ] job_id }
[ , [ @oldest_date = ] oldest_date ]
引数
@job_name
履歴レコードを削除するジョブの名前。 job_nameは sysname で、既定値は NULL です。 job_idまたはjob_nameを指定する必要がありますが、両方を指定することはできません。
Note
sysadmin 固定サーバー ロールのメンバー、または SQLAgentOperatorRole 固定データベース ロールのメンバーは、job_nameまたはjob_idを指定せずに実行sp_purge_jobhistory
できます。 sysadmin ユーザーがこれらの引数を指定しない場合、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴は、oldest_dateで指定された時間内に削除されます。 SQLAgentOperatorRole ユーザーがこれらの引数を指定しない場合、すべてのローカル ジョブのジョブ履歴は、oldest_dateで指定された時間内に削除されます。
@job_id
レコードを削除するジョブのジョブ ID 番号。 job_idは uniqueidentifier で、既定値は NULL
. job_idまたはjob_nameを指定する必要がありますが、両方を指定することはできません。
sysadmin または SQLAgentOperatorRole ユーザーがこの引数を使用する方法については、@job_nameの説明のメモを参照してください。
@oldest_date
履歴の中で保持する最も古いレコードを指定します。 oldest_dateは datetime で、既定値は NULL
. oldest_dateを指定すると、sp_purge_jobhistory
指定した値より古いレコードのみが削除されます。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
なし
解説
正常に完了すると sp_purge_jobhistory
、メッセージが返されます。
このストアド プロシージャは、Azure SQL Database の sp_purge_jobhistory
Azure Elastic Jobs サービスの同様の オブジェクトと名前を共有します。 エラスティック ジョブのバージョンについては、「jobs.sp_purge_jobhistory (Azure エラスティック ジョブ) (Transact-SQL)」を参照してください。
アクセス許可
既定では、sysadmin 固定サーバー ロールまたは SQLAgentOperatorRole 固定データベース ロールのメンバーのみがこのストアド プロシージャを実行できます。
sysadmin のメンバーは、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴を消去できます。 SQLAgentOperatorRole のメンバーは、すべてのローカル ジョブのジョブ履歴のみを消去できます。
SQLAgentUserRole のメンバーや SQLAgentReaderRole のメンバーを含む他のユーザーには、EXECUTE 権限を明示的に付与するsp_purge_jobhistory
必要があります。 このストアド プロシージャに対する EXECUTE 権限が許可されていると、これらのユーザーは自分が所有しているジョブの履歴だけを削除できます。
SQLAgentUserRole、SQLAgentReaderRole、および SQLAgentOperatorRole 固定データベース ロールは、データベース内にありますmsdb
。 権限の詳細については、「SQL Server エージェント固定データベース ロール」を参照してください。
例
A. 特定のジョブの履歴を削除する
次の例では、という名前 NightlyBackups
のジョブの履歴を削除します。
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
@job_name = N'NightlyBackups' ;
GO
B. すべてのジョブの履歴を削除する
Note
sysadmin 固定サーバー ロールのメンバーと SQLAgentOperatorRole のメンバーのみが、すべてのジョブの履歴を削除できます。 sysadmin ユーザーがパラメーターなしでこのストアド プロシージャを実行すると、すべてのローカル ジョブとマルチサーバー ジョブのジョブ履歴が消去されます。 SQLAgentOperatorRole ユーザーがパラメーターなしでこのストアド プロシージャを実行すると、すべてのローカル ジョブのジョブ履歴のみが消去されます。
次の例では、すべての履歴レコードを削除するパラメーターなしでプロシージャを実行します。
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory ;
GO
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示