sp_purge_jobhistory (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

拿掉 SQL Server Agent 服務中作業的記錄記錄。

Transact-SQL 語法慣例

語法

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

引數

@job_name

這是要刪除記錄的作業名稱。 job_name為 sysname,預設值為 NULL。 必須指定job_idjob_name,但無法指定兩者。

注意

系統管理員固定伺服器角色或 SQLAgentOperatorRole 固定資料庫角色的成員可以執行sp_purge_jobhistory,而不需指定job_namejob_id。 當系統管理員使用者未指定這些自變數時,所有本機和多伺服器作業的作業歷程記錄都會在oldest_date指定的時間內刪除。 當 SQLAgentOperatorRole 使用者未指定這些自變數時,所有本機作業的作業歷程記錄都會在oldest_date指定的時間內刪除。

@job_id

這是要刪除記錄之作業的作業識別碼。 job_id為 uniqueidentifier,預設值為 NULL必須指定job_idjob_name,但無法指定兩者。

如需 sysadminSQLAgentOperatorRole 使用者如何使用這個自變數的相關信息,請參閱 @job_name 的說明

@oldest_date

要保留在記錄中的最舊記錄。 oldest_date為 datetime,預設值為 NULL。 指定oldest_datesp_purge_jobhistory只會移除比指定的值還舊的記錄。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

None

備註

成功完成時 sp_purge_jobhistory ,會傳回訊息。

此預存程式會與 Azure SQL 資料庫 的 Azure 彈性作業服務類似物件共享 的名稱sp_purge_jobhistory。 如需彈性作業版本的相關信息,請參閱 jobs.sp_purge_jobhistory (Azure Elastic Jobs) (Transact-SQL)

權限

根據預設,只有 sysadmin 固定伺服器角色或 SQLAgentOperatorRole 固定資料庫角色的成員才能執行這個預存程式。

系統管理員的成員可以清除所有本機和多伺服器作業的作業歷程記錄。 SQLAgentOperatorRole 的成員只能清除所有本機作業的作業歷程記錄。

其他使用者,包括 SQLAgentUserRole 的成員和 SQLAgentReaderRole 的成員,必須明確授與 上的 sp_purge_jobhistoryEXECUTE 許可權。 在此預存程式上授與 EXECUTE 許可權之後,這些使用者只能清除自己擁有之作業的歷程記錄。

SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole 固定資料庫角色位於msdb資料庫中。 如需其許可權的詳細資訊,請參閱 SQL Server Agent 固定資料庫角色

範例

A. 拿掉特定作業的歷程記錄

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

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

B. 拿掉所有作業的歷程記錄

注意

只有系統管理員固定伺服器角色的成員和 SQLAgentOperatorRole 的成員可以移除所有作業的歷程記錄。 當 系統管理員 使用者執行這個沒有參數的預存程式時,會清除所有本機和多伺服器作業的作業歷程記錄。 當 SQLAgentOperatorRole 使用者執行這個沒有參數的預存程式時,只會清除所有本機作業的作業歷程記錄。

下列範例會執行沒有參數的程式,以移除所有記錄記錄。

USE msdb ;  
GO  
  
EXEC dbo.sp_purge_jobhistory ;  
GO  

下一步