sqlinsight-pro/SQL Scripts/SQLI-WIN-013.sql
Søren Eggert Lundsteen Olsen 842286d57d SQL Scripts for the Windows server and synthetic check rules (SQLI-WIN-001..013, SQLI-SYN-001..003)
One reviewable file per rule id with a Danish header: what and why, thresholds
with config keys and defaults, severity, required rights (never local
administrator), supported versions, collector file and member, and the
evaluation in plain Danish. The Windows rules use no SQL: their exact CIM/WQL
queries, event log XPath and a read-only PowerShell snippet to verify them are in
a comment block. SQLI-SYN-001/002 carry the exact SQL a SQL check runs (session
settings, transaction that is always rolled back, SELECT 1). A test checks every
server and check rule has its file.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 14:58:36 +02:00

44 lines
2.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
SQLI-WIN-013 – En planlagt opgave kørte ikke, da den skulle
============================================================
Hvad og hvorfor
Opgaven skulle have kørt, men gjorde det ikke: Opgavestyring kørte ikke, betingelserne var ikke opfyldt (fx "kun når
brugeren er logget på"), eller serveren var slukket. Det, opgaven gør, er ikke sket.
Tærskler (agentens appsettings.json)
SQLInsight:Servers:Tasks:LateMinutes standard 60 (næste kørsel mere end så mange minutter i fortiden)
SQLInsight:Servers:Tasks:IncludeMicrosoftTasks standard false
SQLInsight:Servers:Tasks:Ignore opgaver der aldrig overvåges
Alvor
Middel.
Rettigheder på den overvågede server (db/permissions/grant-windows-server.ps1, aldrig lokal administrator)
WMI Enable Account/Remote Enable på root\Microsoft\Windows\TaskScheduler (se SQLI-WIN-012 om GetInfo over WinRM).
Understøttede versioner
Windows Server 2012 og nyere.
Collector
src/SQLInsight.Servers/CimWindowsServerSource.cs – Session.GetTasksAsync (CimQueries.TaskQuery og
PS_ScheduledTask.GetInfoByName), hvert 15. minut fra src/SQLInsight.Agent/Servers/ServerMonitor.cs – CollectTasksAsync.
Regel
src/SQLInsight.Rules/Servers/WindowsServerRules.cs – MissedScheduledTaskRule
Evaluering
Et fund pr. aktiveret, overvåget opgave, der ikke kører nu, og hvor enten NumberOfMissedRuns > 0, eller NextRunTime
ligger mere end LateMinutes i fortiden, uden at LastRunTime er efter det tidspunkt.
Reglen bruger ikke SQL. Forespørgslerne mod Windows står herunder; filen indeholder kun kommentarer og ændrer intet.
CIM/WQL (namespace root\Microsoft\Windows\TaskScheduler):
SELECT TaskName, TaskPath, State FROM MSFT_ScheduledTask
CIM-metode (skrivebeskyttet) pr. overvåget opgave:
PS_ScheduledTask.GetInfoByName(TaskName, TaskPath) -> cmdletOutput: MSFT_TaskDynamicInfo
Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server som agentens konto):
$s = New-CimSession -ComputerName SERVER
Get-ScheduledTask -CimSession $s | Where-Object { $_.TaskPath -notlike '\Microsoft\*' -and $_.State -ne 'Disabled' } |
Get-ScheduledTaskInfo -CimSession $s | Where-Object { $_.NumberOfMissedRuns -gt 0 -or ($_.NextRunTime -and $_.NextRunTime -lt (Get-Date).AddMinutes(-60)) }
*/