违反政策:误报

时间:2018-09-11 06:17:38

标签: sql-server admin sql-server-2016

SQL Server 2016中的策略管理存在一个奇怪的问题。

背景:修补后,我在DatabaseMail方面遇到问题(请参见FIX: SQL Server 2016 Database Mail does not work on a computer that does not have the .NET Framework 3.5 installed)。我解决了。

该问题是随机检测到的。因此,我决定至少使用一种策略来创建日志条目。

  1. 该条件应等于0:

    ExecuteSql('Numeric', 'SELECT COUNT(*) FROM msdb.dbo.sysmail_allitems WHERE sent_status IS NOT NULL AND sent_status <> ''sent'';')
    
  2. 已设置了计划的系统策略。

  3. 最后,有一个警报正在监视“ SQL Server事件警报”类型,报告错误号为34052。

到目前为止一切都很好。如果我手动评估该策略,则可以。 但是,如果该政策是由求职代理评估的,则报告违反政策。为什么呢?

自动创建的工作代理有2个步骤:

  1. 验证是否启用了自动化。

    IF (msdb.dbo.fn_syspolicy_is_automation_enabled() != 1)
        BEGIN
            RAISERROR(34022, 16, 1)
        END
    
  2. 评估策略。 (键入PowerShell)

    dir SQLSERVER:\SQLPolicy\<SERVER>\<INSTANCE>\Policies | where { $_.ScheduleUid -eq "D8E103AA-6886-4913-BB64-2662580C19E8" } |  where { $_.Enabled -eq 1} | where {$_.AutomatedPolicyEvaluationMode -eq 4} | Invoke-PolicyEvaluation -AdHocPolicyEvaluationMode 2 -TargetServerName <SERVER>\<INSTANCE>
    

这里运行有什么不同?

非常感谢您!

最好的问候, 敏捷

0 个答案:

没有答案