对基于策略的管理策略进行故障排除
基于策略的管理将错误记录到 Windows 事件日志和 SQL Server 代理日志(对于计划的策略)中。如果策略未启用或者对预期目标无效,则不会将故障视为错误,也不会进行记录。
解决策略失败
本部分介绍了两种策略失败以及解决这些失败所需的步骤。
“更改时: 记录”策略或“更改时: 禁止”策略无法执行
使用**“更改时: 记录”或“更改时: 禁止”**评估模式的策略由于以下原因之一而无效:
已禁用策略。
筛选器将目标排除。
目标没有订阅包含该策略的策略组。
对于**“更改时: 禁止”**评估模式,Service Broker 事件处理机制不监视正确的事件。
评估引擎发生故障。
若要解决此问题,请执行以下步骤:
检查是否执行了策略。(也可以通过日志查看器查看此数据。)
若要查看执行的策略是否出现异常消息,请检查 msdb.dbo.syspolicy_policy_execution_history 视图中的策略执行历史记录。
若要查看是否为特定目标执行了策略,请检查 msdb.dbo.syspolicy_policy_execution_history_details 视图中相关的特定目标的策略执行历史记录。
检查策略对相关目标是否有效。
确保启用了策略。
若要确保将策略应用于该目标,请使用 SQL Server Management Studio 中的**“查看策略”**页。
对于使用**“记录时: 禁止”**评估模式的策略,Service Broker 将检查事件处理机制是否监视正确的事件。
确保事务已提交并生成一个事件,并且定义了策略条件的方面支持该事件。
确保 Service Broker 队列正在使用以下查询监视正确的事件:
SELECT * FROM sys.server_event_notifications WHERE name = N'syspolicy_event_notification' ; GO
检查评估引擎。
- 检查 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 事件日志以查找策略执行故障。