/* 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) */