共用方式為


sp_purge_jobhistory (Transact-SQL)

移除作業的記錄。

主題連結圖示 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 權限之後,這些使用只能清除他們自己的作業記錄。

SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole 固定資料庫角色是在 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

請參閱

參考

sp_help_job (Transact-SQL)

sp_help_jobhistory (Transact-SQL)

系統預存程序 (Transact-SQL)

GRANT 物件權限 (Transact-SQL)