共用方式為


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_namesysname,預設值是 NULL。您必須指定 job_idjob_name,但不能同時指定這兩者。

    ms175044.note(zh-tw,SQL.90).gif附註:
    系統管理員 (sysadmin) 固定伺服器角色的成員或 SQLAgentOperatorRole 固定資料庫角色的成員,可以在沒有指定 job_namejob_id 的情況下執行 sp_purge_jobhistory。若系統管理員 (sysadmin) 使用者未指定這些引數,則在 oldest_date 指定的時間內會刪除所有本機作業和多伺服器作業的作業歷程記錄。若 SQLAgentOperatorRole 使用者未指定這些引數,則在 oldest_date 指定的時間內會刪除所有本機作業的作業歷程記錄。
  • [ @job_id= ] job_id
    這是要刪除記錄之作業的作業識別碼。job_iduniqueidentifier,預設值是 NULL。您必須指定 job_idjob_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 權限之後,這些使用只能清除他們自己的作業歷程記錄。

SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole 固定資料庫角色是在 msdb 資料庫中。如需有關其權限的詳細資料,請參閱<SQL Server Agent 固定資料庫角色>。

範例

A. 移除特定作業的歷程記錄

下列範例會移除名稱為 NightlyBackups 之作業的歷程記錄。

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory
    @job_name = N'NightlyBackups' ;
GO

B. 移除所有作業的歷程記錄

ms175044.note(zh-tw,SQL.90).gif附註:
只有系統管理員 (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)

說明及資訊

取得 SQL Server 2005 協助