syspolicy_policy_execution_history_details (Transact-SQL)

适用范围:SQL Server

显示执行的条件表达式、表达式目标、每次执行的结果以及有关出现的任何错误的详细信息。 下表介绍了 syspolicy_execution_history_details 视图中的列。

列名称 数据类型 描述
detail_id bigint 此记录的标识符。 每个记录表示尝试计算或强制执行策略中的一个条件表达式。 如果应用于多个目标,每个条件将具有每个目标的详细记录。
history_id bigint 历史记录事件的标识符。 每个历史记录事件表示尝试执行一次策略。 由于条件可能具有几个条件表达式和几个目标,因此,history_id 可能会创建几条详细记录。 使用history_id列将此视图联接到 syspolicy_policy_execution_history 视图。
target_query_expression nvarchar(max) 策略目标和 syspolicy_policy_execution_history 视图。
execution_date datetime 此详细记录的创建日期和时间。
result bit 此目标和条件表达式计算成功或失败:

0(成功)或 1(失败)。
result_detail nvarchar(max) 结果消息。 仅当由方面提供时才可用。
exception_message nvarchar(max) 发生的异常所生成的消息。
异常 nvarchar(max) 发生的异常的说明。

注解

对基于策略的管理进行故障排除时,请查询syspolicy_policy_execution_history_details视图以确定哪些目标和条件表达式组合失败、失败时以及查看相关错误。

下面的查询将 syspolicy_policy_execution_history_details 视图与 syspolicy_policy_execution_history_detailssyspolicy_policies 视图合并在一起,以显示策略名称、条件名称以及有关失败的详细信息。

SELECT Pol.name AS Policy,   
Cond.name AS Condition,   
PolHistDet.target_query_expression,   
PolHistDet.execution_date,   
PolHistDet.result,   
PolHistDet.result_detail,   
PolHistDet.exception_message,   
PolHistDet.exception   
FROM msdb.dbo.syspolicy_policies AS Pol  
JOIN msdb.dbo.syspolicy_conditions AS Cond  
    ON Pol.condition_id = Cond.condition_id  
JOIN msdb.dbo.syspolicy_policy_execution_history AS PolHist  
    ON Pol.policy_id = PolHist.policy_id  
JOIN msdb.dbo.syspolicy_policy_execution_history_details AS PolHistDet  
    ON PolHist.history_id = PolHistDet.history_id  
WHERE PolHistDet.result = 0 ;  

权限

要求具有 msdb 数据库中 PolicyAdministratorRole 角色的成员身份。

使用基于策略的管理来管理服务器
基于策略的管理视图 (Transact-SQL)