sp_purge_jobhistory (Transact-SQL)
删除SQL Server 代理服务中作业的历史记录。
语法
sp_purge_jobhistory
{ [ @job_name = ] 'job_name' |
| [ @job_id = ] job_id }
[ , [ @oldest_date = ] oldest_date ]
参数
@job_name
要删除其历史记录的作业的名称。 job_name为 sysname,默认值为 NULL。 必须指定job_id或job_name,但不能同时指定两者。
注意
sysadmin 固定服务器角色的成员或 SQLAgentOperatorRole 固定数据库角色的成员可以执行sp_purge_jobhistory
,而无需指定job_name或job_id。 当 sysadmin 用户未指定这些参数时,将在oldest_date指定的时间内删除所有本地和多服务器作业的作业历史记录。 当 SQLAgentOperatorRole 用户未指定这些参数时,将在oldest_date指定的时间内删除所有本地作业的作业历史记录。
@job_id
要删除其记录的作业的标识号。 job_id 为 uniqueidentifier,默认值为 NULL
. 必须指定job_id或job_name,但不能同时指定两者。
有关 sysadmin 或 SQLAgentOperatorRole 用户如何使用此参数的信息,请参阅@job_name的说明。
@oldest_date
历史记录中保留的最早记录。 oldest_date 为 日期/时间,默认值为 NULL
. 指定oldest_date时,sp_purge_jobhistory
仅删除早于指定值的记录。
返回代码值
0 (成功) 或 1 (失败)
结果集
无
注解
成功完成后 sp_purge_jobhistory
,将返回一条消息。
此存储过程与用于Azure SQL 数据库的 Azure 弹性作业服务的类似对象共享名称sp_purge_jobhistory
。 有关弹性作业版本的信息,请参阅jobs.sp_purge_jobhistory(Azure 弹性作业)(Transact-SQL)。
权限
默认情况下,只有 sysadmin 固定服务器角色的成员或 SQLAgentOperatorRole 固定数据库角色的成员才能执行此存储过程。
sysadmin 的成员可以清除所有本地和多服务器作业的作业历史记录。 SQLAgentOperatorRole 的成员只能清除所有本地作业的作业历史记录。
其他用户(包括 SQLAgentUserRole 的成员和 SQLAgentReaderRole 的成员)必须显式授予 EXECUTE 权限sp_purge_jobhistory
。 当被授予对此存储过程的 EXECUTE 权限之后,这些成员只可以清除其所拥有作业的历史记录。
SQLAgentUserRole、SQLAgentReaderRole 和 SQLAgentOperatorRole 固定数据库角色位于msdb
数据库中。 有关其权限的详细信息,请参阅SQL Server 代理固定数据库角色。
示例
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
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈