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,但不能同時指定這兩者。[!附註]
系統管理員 (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 權限之後,這些使用只能清除他們自己的作業記錄。
SQLAgentUserRole、SQLAgentReaderRole 和 SQLAgentOperatorRole 固定資料庫角色是在 msdb 資料庫中。 如需有關其權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。
範例
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