sqlinsight-pro/SQL Scripts/SQLI-WIN-002.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

47 lines
2.7 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-002 – Serveren har næsten ingen ledig hukommelse
==========================================================
Hvad og hvorfor
Når Windows løber tør for ledig hukommelse, flyttes data til sidefilen, alt bliver langsomt, og processer kan fejle
med "out of memory". SQL Server kan blive tvunget til at give hukommelse tilbage.
Tærskler (agentens appsettings.json)
SQLInsight:Servers:Memory:AvailablePercent standard 5 (andel ledig af den samlede hukommelse)
SQLInsight:Servers:Memory:AvailableMegabytes standard 1024 (ledig hukommelse i MB)
Begge skal være under grænsen (gennemsnit over 5 minutter), så store SQL Server-hosts, der bevidst har lidt
tilbage, men stadig flere GB, ikke giver fund.
Alvor
Middel; Høj under 2 % og under 256 MB.
Rettigheder på den overvågede server (db/permissions/grant-windows-server.ps1, aldrig lokal administrator)
Performance Monitor Users + WMI Enable Account/Remote Enable på root\cimv2
WS-Man: Remote Management Users · DCOM: Distributed COM Users
Understøttede versioner
Windows Server 2008 R2 og nyere.
Collector
src/SQLInsight.Servers/CimWindowsServerSource.cs – Session.GetPerformanceAsync (CimQueries.MemoryQuery) og
Session.GetOperatingSystemAsync (CimQueries.OperatingSystemQuery), hvert minut fra
src/SQLInsight.Agent/Servers/ServerMonitor.cs – CollectPerformanceAsync.
Regel
src/SQLInsight.Rules/Servers/WindowsServerRules.cs – ServerMemoryRule
Evaluering
Ledig hukommelse er Memory\Available MBytes; andelen er den i forhold til Win32_OperatingSystem.TotalVisibleMemorySize.
Gennemsnittet over de seneste 5 minutter (mindst 80 % dækket) sammenlignes med begge grænser.
Reglen bruger ikke SQL. Forespørgslerne mod Windows står herunder; filen indeholder kun kommentarer og ændrer intet.
CIM/WQL (namespace root\cimv2):
SELECT AvailableMBytes, PagesPersec, CommittedBytes, CommitLimit, Timestamp_PerfTime, Frequency_PerfTime FROM Win32_PerfRawData_PerfOS_Memory
SELECT Caption, Version, BuildNumber, LastBootUpTime, TotalVisibleMemorySize, CSName FROM Win32_OperatingSystem
Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server som agentens konto):
$s = New-CimSession -ComputerName SERVER
$m = Get-CimInstance -CimSession $s -Query "SELECT AvailableMBytes FROM Win32_PerfRawData_PerfOS_Memory"
$o = Get-CimInstance -CimSession $s -Query "SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem"
"{0} MB ledig ({1:N1} %)" -f $m.AvailableMBytes, (100 * $m.AvailableMBytes * 1024 / $o.TotalVisibleMemorySize)
*/