sp_syspolicy_delete_policy_execution_history (Transact-SQL)

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

适用范围:SQL Server(SQL Server 2008 至当前版本)。

主题链接图标 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 的数据类型为 datetime 且是必需的。 可以为 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 指定一个策略标识符,并且将 oldest_date 指定为 NULL。

  • 若要删除特定日期前的所有策略的策略执行历史记录,请为 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 = '2009-02-16 16:00:00.000';

GO

请参阅

参考

基于策略的管理存储过程 (Transact-SQL)

sp_syspolicy_set_config_history_retention (Transact-SQL)

sp_syspolicy_purge_history (Transact-SQL)