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)。我解决了。
该问题是随机检测到的。因此,我决定至少使用一种策略来创建日志条目。
该条件应等于0:
ExecuteSql('Numeric', 'SELECT COUNT(*) FROM msdb.dbo.sysmail_allitems WHERE sent_status IS NOT NULL AND sent_status <> ''sent'';')
已设置了计划的系统策略。
最后,有一个警报正在监视“ SQL Server事件警报”类型,报告错误号为34052。
到目前为止一切都很好。如果我手动评估该策略,则可以。 但是,如果该政策是由求职代理评估的,则报告违反政策。为什么呢?
自动创建的工作代理有2个步骤:
验证是否启用了自动化。
IF (msdb.dbo.fn_syspolicy_is_automation_enabled() != 1)
BEGIN
RAISERROR(34022, 16, 1)
END
评估策略。 (键入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>
这里运行有什么不同?
非常感谢您!
最好的问候, 敏捷