SQL Server代理作业历史记录 - 仅删除一天

3
我们如何删除SQL代理作业历史记录(仅针对一个作业),仅删除1天的记录呢?
例如,我只想删除9月1日的记录。
1个回答

1

Microsoft提供了sp_purge_jobhistory用于清除作业历史记录,其中一个参数是日期。

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

现在查看日期的文档,它如下所述:
最古老的记录保留在历史中。oldest_date是datetime类型,默认为NULL。当指定了oldest_date时,sp_purge_jobhistory仅删除早于指定值的记录。
根据上述文档,您无法仅删除一天的记录。
但是查看源代码,我发现它只检查权限并运行以下行:
DELETE FROM msdb.dbo.sysjobhistory
 WHERE ((run_date < @datepart) OR 
 (run_date <= @datepart AND run_time < @timepart))

所以你可以通过传递 run_date = date 来实现,你需要删除它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接