sp_syspolicy_delete_policy_execution_history (Transact-SQL)

适用于:SQL Server

在基于策略的管理中删除策略的执行历史记录。 您可以使用此存储过程删除特定策略或所有策略的执行历史记录,也可以删除特定日期前的执行历史记录。

Transact-SQL 语法约定

语法

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,则下面的行为适用:

  • 若要删除所有策略执行历史记录,请同时 为@policy_id@oldest_date指定 NULL。

  • 若要删除特定策略的所有策略执行历史记录,请指定@policy_id的策略标识符,并将 NULL 指定为@oldest_date

  • 若要删除特定日期之前所有策略的策略执行历史记录,请为@policy_id指定 NULL,并为@oldest_date指定日期

若要存档策略执行历史记录,可以在对象资源管理器中打开策略历史记录日志,并将执行历史记录导出到文件中。 若要访问策略历史记录日志,请展开 “管理”,右键单击“ 策略管理”,然后选择“ 查看历史记录”。

权限

需要 Policy管理员istratorRole 固定数据库角色的成员身份。

重要

可能的凭据提升:Policy管理员istratorRole 角色中的用户可以创建服务器触发器并计划可能影响数据库引擎实例操作的策略执行。 例如,Policy管理员istratorRole 角色中的用户可以创建一个策略,以防止在数据库引擎中创建大多数对象。 由于这种可能的凭据提升,策略管理员istratorRole 角色应仅授予信任控制数据库引擎配置的用户。

示例

以下示例在 ID 为 7 的策略的特定日期之前删除策略执行历史记录。

EXEC msdb.dbo.sp_syspolicy_delete_policy_execution_history
    @policy_id = 7,
    @oldest_date = '2019-02-16 16:00:00.000';
GO