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,则下面的行为适用:
若要删除所有策略执行历史记录,请同时 为@policy_id 和 @oldest_date指定 NULL。
若要删除特定策略的所有策略执行历史记录,请指定@policy_id的策略标识符,并将 NULL 指定为@oldest_date。
若要删除特定日期之前所有策略的策略执行历史记录,请为@policy_id指定 NULL,并为@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
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈