对基于策略的管理策略进行故障排除

基于策略的管理将错误记录到 Windows 事件日志和 SQL Server 代理日志(对于计划的策略)中。如果策略未启用或者对预期目标无效,则不会将故障视为错误,也不会进行记录。

解决策略失败

本部分介绍了两种策略失败以及解决这些失败所需的步骤。

“更改时: 记录”策略或“更改时: 禁止”策略无法执行

使用**“更改时: 记录”“更改时: 禁止”**评估模式的策略由于以下原因之一而无效:

  • 已禁用策略。

  • 筛选器将目标排除。

  • 目标没有订阅包含该策略的策略组。

  • 对于**“更改时: 禁止”**评估模式,Service Broker 事件处理机制不监视正确的事件。

  • 评估引擎发生故障。

若要解决此问题,请执行以下步骤:

  1. 检查是否执行了策略。(也可以通过日志查看器查看此数据。)

    1. 若要查看执行的策略是否出现异常消息,请检查 msdb.dbo.syspolicy_policy_execution_history 视图中的策略执行历史记录。

    2. 若要查看是否为特定目标执行了策略,请检查 msdb.dbo.syspolicy_policy_execution_history_details 视图中相关的特定目标的策略执行历史记录。

  2. 检查策略对相关目标是否有效。

    1. 确保启用了策略。

    2. 若要确保将策略应用于该目标,请使用 SQL Server Management Studio 中的**“查看策略”**页。

  3. 对于使用**“记录时: 禁止”**评估模式的策略,Service Broker 将检查事件处理机制是否监视正确的事件。

    1. 确保事务已提交并生成一个事件,并且定义了策略条件的方面支持该事件。

    2. 确保 Service Broker 队列正在使用以下查询监视正确的事件:

      SELECT * FROM sys.server_event_notifications 
      WHERE name = N'syspolicy_event_notification' ;
      GO
      
  4. 检查评估引擎。

    • 检查 Windows 事件日志以查找基于策略的管理错误。

“按计划”策略无法执行

与**“更改时: 记录”“更改时: 禁止”策略相同,“按计划”**策略也可能会由于上述原因而失败,并且还会由于 SQL Server 代理作业失败而失败。有关作业的详细信息,请参阅查看和修改作业

解决性能问题

基于策略的管理不提供用于诊断性能相关问题的特定工具。若要确定策略的执行时间,请查询 msdb.dbo.syspolicy_policy_execution_history 视图中的 start_date 和 end_date 列。

了解错误处理和日志记录

本部分介绍了几种策略的错误处理和日志记录工作方式。

“更改时: 记录”策略和“更改时: 禁止”策略

策略执行错误将记录到 Windows 事件日志中。该日志包含基于策略的管理错误文本以及包含 SQL Server 事件详细信息的 XML 说明。主执行逻辑上发生的异常是策略执行错误,它们将显示在 msdb.dbo.syspolicy_policy_execution_history 和 msdb.dbo.syspolicy_policy_execution_history_details 视图中。

“按计划”策略

由于**“按计划”**策略涉及 SQL Server 代理,因此应首先查看代理日志文件。检查作业是否成功完成。SQL Server 代理日志包含存储过程调用故障。如果作业成功完成,则检查 Windows 事件日志以查找策略执行故障。