sp_syspolicy_delete_policy_execution_history (Transact-SQL)
适用范围:SQL Server
在基于策略的管理中删除策略的执行历史记录。 您可以使用此存储过程删除特定策略或所有策略的执行历史记录,也可以删除特定日期前的执行历史记录。
语法
sp_syspolicy_delete_policy_execution_history
[ @policy_id = ] policy_id
, [ @oldest_date = ] 'oldest_date'
[ ; ]
参数
[ @policy_id = ] policy_id
要为其删除执行历史记录的策略的标识符。 @policy_id为 int,并且是必需的。 可以为 NULL
。
[ @oldest_date = ] 'oldest_date'
要保留策略执行历史记录的最旧日期。 先于此日期的所有执行历史记录都将被删除。 @oldest_date为日期/时间,并且是必需的。 可以为 NULL
。
返回代码值
0
(成功)或 1
(失败)。
注解
必须在系统数据库的上下文msdb
中运行sp_syspolicy_delete_policy_execution_history
。
若要获取@policy_id的值以及查看执行历史记录日期,可以使用以下查询:
SELECT a.name AS N'policy_name',
b.policy_id,
b.start_date,
b.end_date
FROM msdb.dbo.syspolicy_policies AS a
INNER JOIN msdb.dbo.syspolicy_policy_execution_history AS b
ON a.policy_id = b.policy_id;
如果为一个值或两个值指定 NULL
,则适用以下行为:
若要删除所有策略执行历史记录,
NULL
请同时指定 @policy_id 和 @oldest_date。若要删除特定策略的所有策略执行历史记录,请指定@policy_id的策略标识符,并指定
NULL
为@oldest_date。若要删除特定日期之前所有策略的策略执行历史记录,请
NULL
指定@policy_id,并指定@oldest_date的日期。
若要存档策略执行历史记录,可以在对象资源管理器中打开策略历史记录日志,并将执行历史记录导出到文件中。 若要访问策略历史记录日志,请展开 “管理”,右键单击“ 策略管理”,然后选择“ 查看历史记录”。
权限
需要 PolicyAdministratorRole 固定数据库角色的成员身份。
重要
可能的凭据提升:PolicyAdministratorRole 角色中的用户可以创建服务器触发器和计划策略执行,这些触发器可能会影响数据库引擎实例的操作。 例如,PolicyAdministratorRole 角色中的用户可以创建一个策略,以防止在数据库引擎中创建大多数对象。 由于这种可能的凭据提升,PolicyAdministratorRole 角色应仅授予信任控制数据库引擎配置的用户。
示例
以下示例在 ID 为 7
的策略的特定日期之前删除策略执行历史记录。
EXEC msdb.dbo.sp_syspolicy_delete_policy_execution_history
@policy_id = 7,
@oldest_date = '2019-02-16 16:00:00.000';
GO