sqlinsight-pro/SQL Scripts/README.md
Søren Eggert Lundsteen Olsen 53ffc008f0 Review 1.5: SQL Scripts describe the reviewed Windows server and check rules
Headers of SQLI-WIN-001/006/007/008/009/010/012/013 and SQLI-SYN-001 follow the rule
changes (not measurable instead of passed, caps and summary findings, hourly 24-hour
counts, per-user and updater tasks, neutral check titles); SQLI-WIN-010's severity
gains Low when the event log cannot be read (also in README.md).

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

36 KiB
Raw Blame History

SQL Scripts

Denne mappe indeholder præcis den SQL, SQLInsight Pro kører mod en overvåget SQL Server, ordnet efter regel. Den er lavet, så en DBA kan gennemgå hver eneste sætning, før agenten får adgang til en server: hvad der læses, med hvilke rettigheder, på hvilke versioner, og hvordan reglen bagefter vurderer data.

Agenten kører ikke filerne her. De er en læsbar kopi af SQL'en i koden, og unit tests sikrer, at kopien er identisk med koden (se Hold mappen i sync).

Fra 1.5 har også reglerne for Windows-servere (SQLI-WIN-…) og syntetiske tjek (SQLI-SYN-…) en fil her, med samme header. De fleste af dem sender ingen SQL: forespørgslerne mod Windows (CIM/WQL og hændelseslogsfilteret) står ordret i kommentarer, så de kan gennemgås på samme måde (se Windows-servere og syntetiske tjek).

Navngivning

Fil Indhold
<regel-id>.sql Én fil pr. regel, navngivet med regel-id'et præcis som i systemet: SQLI-… for de indbyggede regler (C#), COM-… for community-regler (JSON i rules/community/).
_collectors/<Collector>.sql Alle forespørgsler fra én collector. Flere regler deler ofte samme collector; regelfilerne gentager SQL'en, så hver fil kan køres for sig.
_collectors/InstanceProbe.sql Registreringen af instansen (version, udgave, Always On) og de sessionsindstillinger, agenten sætter på hver forbindelse.
_collectors/AxDatabaseDetector.sql, _collectors/AxBatchCollector.sql, _collectors/AxSequenceCollector.sql Dynamics AX (fra 1.4): den fælles AX-genkendelse og læsningen af batchjob, nummerserier og RecId i AX-databasen. AX-forespørgslerne er vist for hver AX-version, SQLInsight har et skema for (Axapta 3.0, AX 4.0, AX 2009 og AX 2012), og for databasen AXDB.
_collectors/DatabaseDiscovery.sql, _collectors/PermissionCheck.sql Søgningen efter databaser (med Dynamics AX-genkendelse) og forbindelsestesten med rettighedstjek under Servere og databaser (fra 1.3). De køres kun, når der bedes om dem i webbrugerfladen, og søgningen desuden hver time.
_collectors/SyntheticCheckRunner.sql Det syntetiske SQL-tjek (fra 1.5): sessionsindstillingerne, USE, transaktionen og standardforespørgslen. Tjekkets egen forespørgsel køres i stedet for SELECT 1, og transaktionen rulles altid tilbage.

Opbygning af en regelfil

Hver fil starter med en kommentar-header på dansk:

  • Regel-id, titel, alvor (severity) og understøttede versioner.
  • Hvad tjekkes, og hvorfor.
  • Vurdering: de fleste regler afgør ikke selv noget i SQL. Collectoren læser data, og reglen vurderer dem i C# (fx "fund hvis ventetiden er over 5 ms i gennemsnit mellem to målinger"). Logikken er beskrevet i almindeligt dansk.
  • Grænseværdier med konfigurationsnøgle (i agentens appsettings.json, sektionen SQLInsight) og standardværdi, eller "fast i koden".
  • Rettigheder som præcise GRANT-sætninger ([agent] = agentens login), svarende til db/permissions/grant-least-privilege.sql.
  • Data kommer fra: collectoren, kildefilen og konstanten/metoden, der indeholder SQL'en, samt intervallet.
  • Regelkode: filen og klassen, der vurderer data.
  • Read-only: hvad scriptet gør ud over SELECT.

Derefter følger SQL'en, én blok pr. variant:

-- Variant: SQL Server 2005 – 2008 R2
-- Kilde: DatabaseCollector.BuildSql2005(2005)
-- Kode:  src/SQLInsight.Collectors/Databases/DatabaseCollector.cs : DatabaseCollector.BuildSql2005(instance, capabilities)
SELECT ...
GO
  • Variant siger, hvilke versioner (eller hvilken situation) teksten sendes for. Agenten vælger varianten ud fra instansens version og capabilities.
  • Kilde er nøglen, som testen bruger til at sammenligne med koden.
  • Kode er stedet i koden, hvor SQL'en står eller bygges.

Sådan køres scriptene

  1. Åbn filen i SQL Server Management Studio (eller kør sqlcmd -i "SQL Scripts\SQLI-DB-007.sql").
  2. Forbind som agentens login (fx gMSA'en), eller et login med præcis de rettigheder, grant-least-privilege.sql giver. Som sysadmin virker alt, men så ser man ikke, om en rettighed mangler.
  3. Kør hele filen. Første batch sætter de samme sessionsindstillinger som agenten: SET LOCK_TIMEOUT 5000; SET DEADLOCK_PRIORITY LOW; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
  4. Varianter for andre SQL Server-versioner end din kan fejle (fx SQL Server 2000-varianten mod master.dbo.sysaltfiles eller kolonner, der først findes i nyere versioner). Det er forventet; SSMS fortsætter med næste batch.

Bemærk:

  • Read-only. Alle scripts læser kun: SELECT mod katalog-views og DMV'er, DBCC TRACESTATUS, DBCC SQLPERF(WAITSTATS) (kun SQL Server 2000), xp_readerrorlog, xp_msver, sys.fn_trace_gettable, lokale variabler og USE. Ingen undtagelser: heller ikke midlertidige tabeller i tempdb. Dynamics AX-læsningerne (fra 1.4) kører som EXEC [AXDB].sys.sp_executesql N'…', så sessionen aldrig skifter database; batchen i strengen er selv kun SELECT med TOP (READ COMMITTED med SET LOCK_TIMEOUT 2000, eller SNAPSHOT, aldrig NOLOCK), og testen tjekker den på samme måde.
  • Per-database-forespørgsler (indexes, statistikker, Query Store, database-scoped community-regler) kører agenten i hver online brugerdatabase. Her er de vist for msdb, som findes på alle instanser, så scriptet kan køres uændret. Ret [msdb] / N'msdb' til den database, du vil se.
  • Værdier, agenten beregner ved kørsel (default trace-filens sti, tidspunktet for forrige måling) er erstattet af variabler, der erklæres lige over forespørgslen med realistiske standardværdier. Kommentaren over viser, hvad agenten indsætter. Grænser fra konfigurationen (fx 1024 MB log, 15 minutter) er vist med standardværdien.
  • Ikke med her: fix-scripts i fundene (de vises for brugeren og køres aldrig automatisk), agentens eget repository (fx baseline-historikken bag SQLI-ANOM-001, som ikke hentes fra den overvågede server) og kundens lokale regler (LOCAL-…).

Windows-servere og syntetiske tjek (fra 1.5)

  • SQLI-WIN-… sender ingen SQL. Filen har samme header som de andre regler (rettighederne er dem, som db/permissions/grant-windows-server.ps1 giver agentens konto, aldrig lokal administrator) og viser derefter, i kommentarer, de præcise CIM/WQL-forespørgsler (kun SELECT), XPath-filteret til hændelsesloggen og det eneste metodekald, Task Schedulers skrivebeskyttede GetInfoByName, samt PowerShell til at efterprøve dem. Agenten starter, stopper eller ændrer intet på serveren. Filerne kan åbnes i SSMS, men gør intet.
  • SQLI-SYN-001 og SQLI-SYN-002 viser præcis det, et syntetisk SQL-tjek sender: sessionsindstillingerne, USE (kun med en database), BEGIN TRANSACTION, forespørgslen (standard SELECT 1) og IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION, der altid køres bagefter. En egen forespørgsel skal være én skrivebeskyttet SELECT (src/SQLInsight.Core/CustomRules/ReadOnlyQuery.cs). TCP-, HTTP-, DNS- og AX-tjek sender ingen SQL.
  • SQLI-SYN-003 (TLS-certifikatet) sender ingen SQL.

Hold mappen i sync

tests/SQLInsight.Collectors.Tests/SqlScripts/SqlScriptTests.cs fejler, hvis mappen og koden ikke stemmer overens:

  • Every_registered_rule_has_a_script_and_every_script_a_rule: hver indbygget regel (BuiltInRules og, fra 1.5, ServerRuleCatalog) og hver community-regel i regelpakken har en <id>.sql, og der er ingen filer for ukendte id'er.
  • Scripts_contain_the_current_sql_from_the_code: hver blok med -- Kilde: <nøgle> indeholder SQL'en, som koden bygger den i dag, ordret (nøglerne står i SqlScriptSources.cs). Kun værdier, agenten beregner ved kørsel, må stå anderledes. Kun Windows-server- og syntetiske-tjek-reglerne må være uden SQL-blokke.
  • Every_collector_query_is_registered_and_in_a_collector_script: hver SQL-konstant og hver Build…Sql-metode i collectorerne er registreret, og hver registreret forespørgsel står i et _collectors/-script.
  • Community_rule_scripts_contain_the_rule_query_verbatim: community-reglens query fra JSON står ordret i filen.
  • Scripts_are_read_only: ingen skrivende sætninger, heller ikke SELECT … INTO #temp - heller ikke i batchen i en EXEC [db].sys.sp_executesql N'…'.
  • tests/SQLInsight.Collectors.Tests/SqlScriptTests.cs (Dynamics AX): hver AX-regel og AX-collector viser SQL'en for alle AX-versioner, og headeren siger, hvad der ikke er verificeret mod kundedata.
  • tests/SQLInsight.Servers.Tests/ServerScriptTests.cs (fra 1.5): hver CIM/WQL-forespørgsel og hvert hændelseslogsfilter i src/SQLInsight.Servers/CimQueries.cs står ordret i en SQLI-WIN-…-fil, og hver af filerne viser mindst én af dem. tests/SQLInsight.Rules.Tests/ServerRuleScriptTests.cs: regel-id og titel i headeren er reglens.

Er en collectors SQL ændret, kan blokkene skrives om fra koden: kør testene med SQLINSIGHT_UPDATE_SQL_SCRIPTS=1 (kommentarlinjerne bevares). Blokke med værdier, agenten beregner ved kørsel (⟪…⟫), udfyldes kun, når de er nye; værdien så sættes ind i hånden.

En ny regel skal derfor have sin SQL Scripts/<id>.sql (se CONTRIBUTING.md). Ændres en collectors SQL, peger testen på de filer, der skal opdateres.

Regler

124 regler: 108 indbyggede (C#: 92 for SQL Server, 13 for Windows-servere og 3 for syntetiske tjek, fra 1.5) og 16 community-regler (JSON).

Regel-id Fil Titel Collector(s) Alvor
SQLI-AG-001 SQLI-AG-001.sql Always On availability group er ikke sund AvailabilityGroupCollector High for DISCONNECTED, NOT_HEALTHY og suspenderet; Medium for PARTIALLY_HEALTHY.
SQLI-AG-002 SQLI-AG-002.sql Sekundær replika er langt bagud AvailabilityGroupCollector Medium
SQLI-AG-003 SQLI-AG-003.sql En node eller et vidne i clusteret er nede AvailabilityGroupCollector High
SQLI-ANOM-001 SQLI-ANOM-001.sql Usædvanlig belastning i forhold til det normale CpuCollector, PerformanceCounterCollector CPU: Medium. Batch requests: Low ved stigning, Medium ved fald. Page life expectancy: Medium.
SQLI-AX-001 SQLI-AX-001.sql Dynamics AX-batchjob er endt med fejl AxDatabaseDetector, AxBatchCollector High
SQLI-AX-002 SQLI-AX-002.sql Dynamics AX-batchjob kører længere end normalt AxDatabaseDetector, AxBatchCollector Medium; High, når kørslen er dobbelt så lang som grænsen.
SQLI-AX-003 SQLI-AX-003.sql Dynamics AX-batchjob er ikke startet til tiden AxDatabaseDetector, AxBatchCollector Medium; High, når jobbet i praksis aldrig er startet.
SQLI-AX-004 SQLI-AX-004.sql Dynamics AX-batchjob hænger i Udfører AxDatabaseDetector, AxBatchCollector High
SQLI-AX-005 SQLI-AX-005.sql Dynamics AX-nummerserie er ved at løbe tør AxDatabaseDetector, AxSequenceCollector Medium; High over den kritiske procent eller inden for de kritiske dage; Critical, når serien er opbrugt.
SQLI-AX-006 SQLI-AX-006.sql Dynamics AX-nummerseriens format er for kort til Højeste AxDatabaseDetector, AxSequenceCollector Medium; High, når NEXTREC allerede er større end formatets kapacitet.
SQLI-AX-007 SQLI-AX-007.sql Spærret Dynamics AX-nummerserie bruges stadig AxDatabaseDetector, AxSequenceCollector Medium
SQLI-AX-008 SQLI-AX-008.sql Kontinuerlig Dynamics AX-nummerserie er ikke ryddet op AxDatabaseDetector, AxSequenceCollector Low
SQLI-AX-009 SQLI-AX-009.sql Dynamics AX RecId er ved at løbe tør AxDatabaseDetector, AxSequenceCollector Axapta 3.0: High/Critical efter grænserne; 64-bit: High; Critical, når RecId er opbrugt.
SQLI-AX-010 SQLI-AX-010.sql AX-bruger blokerer andre AxDatabaseDetector, BlockingCollector Medium; High ved ventetid over 5 minutter eller mindst 10 blokerede sessioner.
SQLI-BLK-001 SQLI-BLK-001.sql Langvarig blocking BlockingCollector Medium; High når længste ventetid er mindst 5 minutter eller mindst 10 sessioner er blokeret.
SQLI-CFG-001 SQLI-CFG-001.sql max server memory er ikke sat ConfigurationCollector, ServerCollector High
SQLI-CFG-002 SQLI-CFG-002.sql max server memory efterlader for lidt til Windows ConfigurationCollector, ServerCollector Medium
SQLI-CFG-003 SQLI-CFG-003.sql cost threshold for parallelism står på standardværdien 5 ConfigurationCollector, ServerCollector Medium
SQLI-CFG-004 SQLI-CFG-004.sql MAXDOP passer ikke til serverens NUMA-layout ConfigurationCollector, ServerCollector Medium
SQLI-CFG-005 SQLI-CFG-005.sql Plan cache er fyldt med engangsplaner ConfigurationCollector, PlanCacheCollector Low
SQLI-CFG-006 SQLI-CFG-006.sql Priority boost er slået til ConfigurationCollector High
SQLI-CFG-007 SQLI-CFG-007.sql Lightweight pooling (fiber mode) er slået til ConfigurationCollector High
SQLI-CFG-008 SQLI-CFG-008.sql xp_cmdshell er slået til ConfigurationCollector Medium
SQLI-CFG-009 SQLI-CFG-009.sql Backup-komprimering er ikke standard ConfigurationCollector, InstanceProbe Low
SQLI-CFG-010 SQLI-CFG-010.sql Dedicated Admin Connection kan kun bruges lokalt ConfigurationCollector Low
SQLI-CFG-011 SQLI-CFG-011.sql Konfigurationsændringer venter på RECONFIGURE eller genstart ConfigurationCollector Low
SQLI-CFG-012 SQLI-CFG-012.sql Deadlocks bliver ikke registreret TraceFlagCollector, InstanceProbe Low
SQLI-CFG-013 SQLI-CFG-013.sql Konfiguration ændret InstanceConfigurationCollector Info
SQLI-CPU-001 SQLI-CPU-001.sql Vedvarende højt CPU-forbrug CpuCollector SQL Server: Medium fra 75 %, High fra 90 %. Andre processer: Medium.
SQLI-CPU-002 SQLI-CPU-002.sql Sætning kører næsten uafbrudt QueryStatsCollector Medium
SQLI-DB-001 SQLI-DB-001.sql Database er ikke tilgængelig DatabaseCollector Critical for SUSPECT, RECOVERY_PENDING og EMERGENCY; Low for OFFLINE.
SQLI-DB-002 SQLI-DB-002.sql AUTO_SHRINK er slået til DatabaseCollector High
SQLI-DB-003 SQLI-DB-003.sql AUTO_CLOSE er slået til DatabaseCollector Medium
SQLI-DB-004 SQLI-DB-004.sql Sidekontrol er ikke CHECKSUM DatabaseCollector Medium
SQLI-DB-005 SQLI-DB-005.sql TRUSTWORTHY er slået til DatabaseCollector Medium
SQLI-DB-006 SQLI-DB-006.sql Database kører med et ældre compatibility level DatabaseCollector, InstanceProbe Low
SQLI-DB-007 SQLI-DB-007.sql Database mangler en nylig fuld backup DatabaseCollector Critical hvis aldrig backet op; High hvis ældre end 7 dage; Medium hvis databasen er i en availability group (backup kan være taget på en anden replika).
SQLI-DB-008 SQLI-DB-008.sql Database i FULL recovery uden log-backups DatabaseCollector High; Medium hvis databasen er i en availability group.
SQLI-DB-009 SQLI-DB-009.sql DBCC CHECKDB er ikke kørt for nylig DatabaseCollector High hvis aldrig kørt eller ældre end 30 dage; ellers Medium.
SQLI-DB-010 SQLI-DB-010.sql Korrupte sider registreret i suspect_pages SuspectPageCollector Critical
SQLI-DB-011 SQLI-DB-011.sql Transaktionsloggen har for mange VLF'er DatabaseCollector Medium; High over 10.000 VLF'er.
SQLI-DB-012 SQLI-DB-012.sql Uhensigtsmæssig autogrowth DatabaseCollector Low
SQLI-DB-013 SQLI-DB-013.sql Databasefil nærmer sig sin maksimale størrelse DatabaseCollector High fra 90 %; Critical når filen har nået MAXSIZE.
SQLI-DB-014 SQLI-DB-014.sql Query Store indsamler ikke længere data DatabaseCollector High ved ERROR; ellers Medium.
SQLI-DB-015 SQLI-DB-015.sql tempdb har for få eller ulige store datafiler DatabaseCollector, ServerCollector Medium for for få filer; Low for ulige store filer.
SQLI-DLK-001 SQLI-DLK-001.sql Deadlocks DeadlockCollector Medium; High fra 10 deadlocks siden sidste måling.
SQLI-IDX-001 SQLI-IDX-001.sql Manglende index med stor effekt IndexCollector Medium hvis forbedringsmålet er mindst 1.000.000; ellers Low.
SQLI-IDX-002 SQLI-IDX-002.sql Ubrugt index koster ved hver skrivning IndexCollector Low; Medium fra 1 GB.
SQLI-IDX-003 SQLI-IDX-003.sql Duplikeret eller overlappende index IndexCollector Medium for nøjagtige dubletter; Low for overlappende.
SQLI-IDX-004 SQLI-IDX-004.sql Heap med mange forwarded records IndexCollector Medium
SQLI-IO-001 SQLI-IO-001.sql Høj læselatens på drev med datafiler FileIoCollector Medium; High fra 50 ms.
SQLI-IO-002 SQLI-IO-002.sql Høj skrivelatens på drev med logfiler FileIoCollector Medium; High fra 15 ms.
SQLI-JOB-001 SQLI-JOB-001.sql SQL Agent-job fejler AgentJobCollector High hvis jobnavnet indeholder backup, checkdb, integrity eller dbcc; ellers Medium.
SQLI-JOB-002 SQLI-JOB-002.sql SQL Server Agent kører ikke AgentJobCollector, InstanceProbe High når der er aktive jobs; ellers Low.
SQLI-LOG-001 SQLI-LOG-001.sql SQL Server har læst beskadigede sider (fejl 823/824/825) ErrorLogCollector Critical for 823/824; High for 825.
SQLI-LOG-002 SQLI-LOG-002.sql I/O-forespørgsler, der tager over 15 sekunder (fejl 833) ErrorLogCollector High
SQLI-LOG-003 SQLI-LOG-003.sql Alvorlige fejl i SQL Servers fejllog (severity 17 og derover) ErrorLogCollector High fra severity 20; ellers Medium.
SQLI-LOG-004 SQLI-LOG-004.sql Mange mislykkede logins ErrorLogCollector Medium
SQLI-LOG-005 SQLI-LOG-005.sql SQL Server har lavet et stack dump ErrorLogCollector High
SQLI-LOG-006 SQLI-LOG-006.sql Fejl i Always On availability groups ErrorLogCollector High
SQLI-MEM-001 SQLI-MEM-001.sql Forespørgsler venter på hukommelse PerformanceCounterCollector, WaitStatsCollector High
SQLI-OPS-001 SQLI-OPS-001.sql Backup eller restore kører markant længere end normalt LongOperationCollector Medium
SQLI-PLAN-001 SQLI-PLAN-001.sql Implicit konvertering forhindrer index seek PlanAnalysisCollector Medium
SQLI-PLAN-002 SQLI-PLAN-002.sql Join uden join-betingelse (kartesisk produkt) PlanAnalysisCollector High
SQLI-PLAN-003 SQLI-PLAN-003.sql Skalar funktion kaldes for hver række PlanAnalysisCollector Medium
SQLI-PLAN-004 SQLI-PLAN-004.sql Sorteringer og hash joins spilder til tempdb PlanAnalysisCollector Medium
SQLI-PLAN-005 SQLI-PLAN-005.sql Forespørgsel får langt mere hukommelse, end den bruger PlanAnalysisCollector Medium
SQLI-QS-001 SQLI-QS-001.sql Planregression: forespørgsel har fået en langsommere plan QueryStoreCollector Medium; High når ekstra tid er mindst 10 minutter i døgnet.
SQLI-QS-002 SQLI-QS-002.sql Forceret plan kan ikke bruges QueryStoreCollector High
SQLI-QS-003 SQLI-QS-003.sql Parameterfølsom forespørgsel (parameter sniffing) QueryStoreCollector Medium
SQLI-REPL-001 SQLI-REPL-001.sql Replikering fejler ReplicationCollector High
SQLI-REPL-002 SQLI-REPL-002.sql Replikering er forsinket ReplicationCollector Medium
SQLI-REQ-001 SQLI-REQ-001.sql Sætning har kørt længe ActivityCollector Medium
SQLI-SEC-001 SQLI-SEC-001.sql Ny forhøjet rettighed på serveren PrivilegeCollector High for sysadmin, securityadmin og CONTROL SERVER; Medium for de øvrige faste serverroller.
SQLI-SEC-002 SQLI-SEC-002.sql For mange personer og konti med sysadmin PrivilegeCollector Medium
SQLI-STAT-001 SQLI-STAT-001.sql Forældede statistikker på store tabeller IndexCollector Low
SQLI-STAT-002 SQLI-STAT-002.sql Automatisk statistik er slået fra DatabaseCollector Medium
SQLI-SVC-001 SQLI-SVC-001.sql En SQL Server-tjeneste, der skal starte automatisk, kører ikke InstanceConfigurationCollector High
SQLI-SYN-001 SQLI-SYN-001.sql Et syntetisk tjek fejler SyntheticCheckRunner High.
SQLI-SYN-002 SQLI-SYN-002.sql Et syntetisk tjek svarer langsomt SyntheticCheckRunner Medium.
SQLI-SYN-003 SQLI-SYN-003.sql TLS-certifikatet udløber snart SyntheticCheckRunner (HTTPS, ingen SQL) Medium; High inden for CertificateCriticalDays; Critical når det er udløbet.
SQLI-TEMP-001 SQLI-TEMP-001.sql Version store i tempdb er stor eller vokser TempdbCollector Medium
SQLI-TEMP-002 SQLI-TEMP-002.sql tempdb er næsten fuld TempdbCollector High
SQLI-TEMP-003 SQLI-TEMP-003.sql Session bruger meget tempdb i lang tid TempdbCollector Medium
SQLI-TRAN-001 SQLI-TRAN-001.sql Transaktion har været åben længe ActivityCollector Medium; High når den har været åben 6 x grænsen.
SQLI-TRAN-002 SQLI-TRAN-002.sql Transaktion bruger meget transaktionslog ActivityCollector Medium
SQLI-VER-001 SQLI-VER-001.sql SQL Server-versionens supportstatus InstanceProbe Critical når extended support er udløbet; High når mainstream er udløbet og der er højst 365 dage til extended support slutter; ellers Medium i extended support.
SQLI-VER-002 SQLI-VER-002.sql Instansen mangler opdateringer InstanceProbe High når versionen stadig er i support; Medium når den er ude af support (så er SQLI-VER-001 det vigtigste fund).
SQLI-WAIT-001 SQLI-WAIT-001.sql SQL Server løber tør for worker threads WaitStatsCollector Critical
SQLI-WAIT-002 SQLI-WAIT-002.sql Tasks venter på CPU (høj signal wait) WaitStatsCollector Medium; High fra 40 %.
SQLI-WAIT-003 SQLI-WAIT-003.sql Sessioner venter meget på låse WaitStatsCollector Medium; High fra 5 ventende tasks i gennemsnit.
SQLI-WAIT-004 SQLI-WAIT-004.sql Forespørgsler venter meget på at læse data fra disk WaitStatsCollector Medium; High fra 8 ventende tasks i gennemsnit.
SQLI-WAIT-005 SQLI-WAIT-005.sql Commits venter på langsom skrivning til transaktionsloggen WaitStatsCollector Medium; High fra 15 ms i gennemsnit.
SQLI-WAIT-006 SQLI-WAIT-006.sql Parallelle forespørgsler venter meget på hinanden WaitStatsCollector Medium; High fra 16 ventende tasks i gennemsnit.
SQLI-WAIT-007 SQLI-WAIT-007.sql Contention på sider i hukommelsen (PAGELATCH) WaitStatsCollector Medium; High fra 4 ventende tasks i gennemsnit.
SQLI-WIN-001 SQLI-WIN-001.sql CPU-forbruget er højt i længere tid CimWindowsServerSource (Windows, ingen SQL) High; Critical når gennemsnittet er 98 % eller derover.
SQLI-WIN-002 SQLI-WIN-002.sql Serveren har næsten ingen ledig hukommelse CimWindowsServerSource (Windows, ingen SQL) Medium; High under 2 % og under 256 MB.
SQLI-WIN-003 SQLI-WIN-003.sql Serveren pager hukommelse til disk CimWindowsServerSource (Windows, ingen SQL) Medium.
SQLI-WIN-004 SQLI-WIN-004.sql Den reserverede hukommelse (commit) er tæt på grænsen CimWindowsServerSource (Windows, ingen SQL) Medium; High ved 97 % eller derover.
SQLI-WIN-005 SQLI-WIN-005.sql Lidt ledig plads på et drev CimWindowsServerSource (Windows, ingen SQL) Medium under FreePercent, High under CriticalFreePercent, Critical under 1 GB eller 1 %.
SQLI-WIN-006 SQLI-WIN-006.sql Et drev bliver fuldt om få dage CimWindowsServerSource (Windows, ingen SQL) Medium; High inden for 7 dage; Critical inden for 2 dage.
SQLI-WIN-007 SQLI-WIN-007.sql En tjeneste, der skal starte automatisk, kører ikke CimWindowsServerSource (Windows, ingen SQL) Medium.
SQLI-WIN-008 SQLI-WIN-008.sql En overvåget tjeneste kører ikke CimWindowsServerSource (Windows, ingen SQL) High når tjenesten ikke kører; Medium når den ikke findes (eller ikke kan ses).
SQLI-WIN-009 SQLI-WIN-009.sql Fejl i Windows' hændelseslog CimWindowsServerSource (Windows, ingen SQL) High: disk/filsystem, ressourcer, niveau Critical, tjeneste stoppet 3+ gange. Medium: tjeneste stoppet, program gik ned, Dynamics AX. Low: almindelige fejl der gentager sig. (Uventet nedlukning: se SQLI-WIN-010.)
SQLI-WIN-010 SQLI-WIN-010.sql Serveren er genstartet CimWindowsServerSource (Windows, ingen SQL) High ved uventet genstart; Info ved genstart uden tegn på at den var uventet; Low når hændelsesloggen ikke kan læses.
SQLI-WIN-011 SQLI-WIN-011.sql Serveren er ikke genstartet i lang tid CimWindowsServerSource (Windows, ingen SQL) Low.
SQLI-WIN-012 SQLI-WIN-012.sql En planlagt opgave fejlede sidste gang, den kørte CimWindowsServerSource (Windows, ingen SQL) Medium.
SQLI-WIN-013 SQLI-WIN-013.sql En planlagt opgave kørte ikke, da den skulle CimWindowsServerSource (Windows, ingen SQL) Medium.
COM-AX-001 COM-AX-001.sql Dynamics AX 3.0 er uden support fra Microsoft CustomQueryCollector Medium
COM-AX-002 COM-AX-002.sql Dynamics AX 3.0 kører på en SQL Server-version, der ikke var understøttet til AX 3.0 CustomQueryCollector Medium
COM-AX-003 COM-AX-003.sql Dynamics AX-database på en instans, hvor MAXDOP ikke er 1 (SQL Server 2005-2014) CustomQueryCollector Medium
COM-AX-004 COM-AX-004.sql Dynamics AX-database, hvor MAXDOP ikke er 1 (SQL Server 2016 og nyere) CustomQueryCollector Medium
COM-AX-005 COM-AX-005.sql Dynamics AX-tabeller uden unikt RecId-indeks CustomQueryCollector Medium
COM-AX-006 COM-AX-006.sql Store Dynamics AX-tabeller uden clustered index (heaps) CustomQueryCollector Medium
COM-AX-007 COM-AX-007.sql Automatiske statistikker er slået fra i en Dynamics AX-database CustomQueryCollector High
COM-CFG-001 COM-CFG-001.sql Default trace er slået fra CustomQueryCollector Low
COM-DB-001 COM-DB-001.sql Fremmednøgler, som SQL Server ikke stoler på CustomQueryCollector Low
COM-FT-001 COM-FT-001.sql Fulltext-katalog er sat på pause, fordi disken er fuld CustomQueryCollector High
COM-FT-002 COM-FT-002.sql Fulltext-katalog er sat på pause eller drosles CustomQueryCollector Medium
COM-FT-003 COM-FT-003.sql Fulltext-indeks uden automatisk opdatering er ikke opdateret i over en uge CustomQueryCollector Low
COM-FT-004 COM-FT-004.sql Fulltext-indeks uden automatisk opdatering er ikke opdateret i over 30 dage CustomQueryCollector Medium
COM-FT-005 COM-FT-005.sql Fulltext-indeks er deaktiveret CustomQueryCollector Medium
COM-SEC-001 COM-SEC-001.sql Login'et sa er aktivt CustomQueryCollector Medium
COM-SEC-002 COM-SEC-002.sql Database ejes af et login, der ikke findes CustomQueryCollector Low

Collectors

Collector Fil Interval Versioner Bruges af
InstanceProbe src/SQLInsight.Connectivity/InstanceProbe.cs én gang, når agenten forbinder til instansen Alle (SQL Server 2000 og nyere) 6 regler
ServerCollector src/SQLInsight.Collectors/Instance/ServerCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:server) Alle (SQL Server 2000 og nyere) 5 regler
ConfigurationCollector src/SQLInsight.Collectors/Instance/ConfigurationCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:configuration) Alle (SQL Server 2000 og nyere) 11 regler
TraceFlagCollector src/SQLInsight.Collectors/Instance/TraceFlagCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:trace-flags) Alle (SQL Server 2000 og nyere) 1 regel
InstanceConfigurationCollector src/SQLInsight.Collectors/Instance/InstanceConfigurationCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:instance-config) Alle; tjenester og IFI fra SQL Server 2008 R2 SP1 2 regler
PrivilegeCollector src/SQLInsight.Collectors/Instance/PrivilegeCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:privileges) SQL Server 2005 og nyere 2 regler
DatabaseCollector src/SQLInsight.Collectors/Databases/DatabaseCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:databases) Alle (SQL Server 2000 og nyere); CHECKDB og VLF'er fra 2016 SP2; Query Store fra 2016 15 regler
SuspectPageCollector src/SQLInsight.Collectors/Instance/SuspectPageCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:suspect-pages) SQL Server 2005 og nyere 1 regel
PlanCacheCollector src/SQLInsight.Collectors/Instance/PlanCacheCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:plan-cache) SQL Server 2005 og nyere 1 regel
WaitStatsCollector src/SQLInsight.Collectors/Performance/WaitStatsCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:wait-stats) Alle (SQL Server 2000 og nyere) 8 regler
FileIoCollector src/SQLInsight.Collectors/Performance/FileIoCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:file-io) SQL Server 2005 og nyere; drev fra 2008 R2 SP1 2 regler
QueryStatsCollector src/SQLInsight.Collectors/Performance/QueryStatsCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:query-stats) SQL Server 2005 og nyere 1 regel
WaitSamplingCollector src/SQLInsight.Collectors/Performance/WaitSamplingCollector.cs 15 sek som standard (SQLInsight:CollectorIntervals:wait-sampling) SQL Server 2005 og nyere ingen regel
LongOperationCollector src/SQLInsight.Collectors/Instance/LongOperationCollector.cs 1 min som standard (SQLInsight:CollectorIntervals:long-operations) SQL Server 2005 og nyere 1 regel
ErrorLogCollector src/SQLInsight.Collectors/Instance/ErrorLogCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:error-log) SQL Server 2005 og nyere 6 regler
TempdbCollector src/SQLInsight.Collectors/Instance/TempdbCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:tempdb) SQL Server 2005 og nyere 3 regler
ReplicationCollector src/SQLInsight.Collectors/Instance/ReplicationCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:replication) SQL Server 2005 og nyere 2 regler
PerformanceCounterCollector src/SQLInsight.Collectors/Performance/PerformanceCounterCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:performance-counters) Alle (SQL Server 2000 og nyere) 2 regler
CpuCollector src/SQLInsight.Collectors/Performance/CpuCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:cpu) SQL Server 2005 og nyere 2 regler
BlockingCollector src/SQLInsight.Collectors/Concurrency/BlockingCollector.cs 1 min som standard (SQLInsight:CollectorIntervals:blocking) Alle (SQL Server 2000 og nyere) 2 regler
ActivityCollector src/SQLInsight.Collectors/Concurrency/ActivityCollector.cs 1 min som standard (SQLInsight:CollectorIntervals:activity) SQL Server 2005 og nyere 3 regler
DeadlockCollector src/SQLInsight.Collectors/Concurrency/DeadlockCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:deadlocks) SQL Server 2008 og nyere (filer fra 2012, ellers ring buffer) 1 regel
QueryStoreCollector src/SQLInsight.Collectors/Performance/QueryStoreCollector.cs 30 min som standard (SQLInsight:CollectorIntervals:query-store) SQL Server 2016 og nyere 3 regler
PlanAnalysisCollector src/SQLInsight.Collectors/Performance/PlanAnalysisCollector.cs 30 min som standard (SQLInsight:CollectorIntervals:plan-analysis) SQL Server 2005 SP2 og nyere 5 regler
IndexCollector src/SQLInsight.Collectors/Databases/IndexCollector.cs 6 timer som standard (SQLInsight:CollectorIntervals:indexes) SQL Server 2005 og nyere 5 regler
AvailabilityGroupCollector src/SQLInsight.Collectors/Instance/AvailabilityGroupCollector.cs 1 min som standard (SQLInsight:CollectorIntervals:availability-groups) SQL Server 2012 og nyere med Always On slået til 3 regler
AgentJobCollector src/SQLInsight.Collectors/Instance/AgentJobCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:agent-jobs) SQL Server 2005 og nyere 2 regler
CustomQueryCollector src/SQLInsight.Collectors/Custom/CustomQueryCollector.cs 15 min som standard (SQLInsight:CollectorIntervals:custom-rules) SQL Server 2005 og nyere (pr. regel: minimumVersion) 16 regler
AxDatabaseDetector src/SQLInsight.Collectors/DynamicsAx/AxDatabaseDetector.cs 1 time som standard (SQLInsight:CollectorIntervals:dynamics-ax); uden AX-læseadgang hvert 5. minut SQL Server 2005 og nyere 17 regler (alle AX-regler)
AxBatchCollector src/SQLInsight.Collectors/DynamicsAx/AxBatchCollector.cs 5 min som standard (SQLInsight:CollectorIntervals:dynamics-ax-batch) SQL Server 2005 og nyere; kræver valgfri AX-læseadgang 4 regler
AxSequenceCollector src/SQLInsight.Collectors/DynamicsAx/AxSequenceCollector.cs 1 time som standard (SQLInsight:CollectorIntervals:dynamics-ax-sequences) SQL Server 2005 og nyere; kræver valgfri AX-læseadgang 5 regler
SyntheticCheckRunner src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs tjekkets eget interval (standard 300 sek, mindst 60) og "Kør nu" SQL Server 2005 og nyere 2 regler (SQLI-SYN-001, SQLI-SYN-002)