The AX scripts written in 1.4 (own header style and a generator) now follow main's "SQL Scripts" structure: the review header, "-- Kilde:" blocks registered in SqlScriptSources and checked word for word against the code. - SqlScriptSources: the shared AX detection (DatabasesSql, LoginSql, BuildDetectionSql), companies, batch jobs, batch history (first read and from the watermark) and number sequences / RecId for Axapta 3.0, AX 4.0, AX 2009 and AX 2012; BlockingCollector split 2008 / 2005, as CONTEXT_INFO comes from sys.dm_exec_sessions from 2008 and from sysprocesses on 2005. - SQLI-AX-001..010 and _collectors/Ax*.sql in main's format; COM-AX-001..007 with the 1.4 queries, the AX detection and USE [AXDB]; BLK-001, BlockingCollector and DatabaseDiscovery updated (CONTEXT_INFO, sp_executesql). - Scripts_are_read_only stays strict (no INTO #temp anywhere) and now also checks the batch inside EXEC [db].sys.sp_executesql N'...'. - SQLINSIGHT_UPDATE_SQL_SCRIPTS=1 (from 1.4) rewrites out-of-date blocks from the code; the 1.4 generator test now checks that every AX script shows its sources for every AX version and says what is unverified. - README: SQLI-AX-001..010, the AX collector scripts, 108 rules. - AxDatabaseDetector: LoginSql and BuildDetectionSql as members, so the registry sees them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
31 KiB
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).
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. |
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, sektionenSQLInsight) og standardværdi, eller "fast i koden". - Rettigheder som præcise
GRANT-sætninger ([agent]= agentens login), svarende tildb/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
Variantsiger, hvilke versioner (eller hvilken situation) teksten sendes for. Agenten vælger varianten ud fra instansens version og capabilities.Kildeer nøglen, som testen bruger til at sammenligne med koden.Kodeer stedet i koden, hvor SQL'en står eller bygges.
Sådan køres scriptene
- Åbn filen i SQL Server Management Studio (eller kør
sqlcmd -i "SQL Scripts\SQLI-DB-007.sql"). - Forbind som agentens login (fx gMSA'en), eller et login med præcis de rettigheder,
grant-least-privilege.sqlgiver. Som sysadmin virker alt, men så ser man ikke, om en rettighed mangler. - 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; - Varianter for andre SQL Server-versioner end din kan fejle (fx SQL Server 2000-varianten mod
master.dbo.sysaltfileseller 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 ogUSE. Ingen undtagelser: heller ikke midlertidige tabeller i tempdb. Dynamics AX-læsningerne (fra 1.4) kører somEXEC [AXDB].sys.sp_executesql N'…', så sessionen aldrig skifter database; batchen i strengen er selv kun SELECT medTOP(READ COMMITTED medSET 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-…).
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 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 iSqlScriptSources.cs). Kun værdier, agenten beregner ved kørsel, må stå anderledes.Every_collector_query_is_registered_and_in_a_collector_script: hver SQL-konstant og hverBuild…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-reglensqueryfra JSON står ordret i filen.Scripts_are_read_only: ingen skrivende sætninger, heller ikkeSELECT … INTO #temp- heller ikke i batchen i enEXEC [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. en collectors SQL ændret, kan blokkene skrives om fra koden: kør testene medSQLINSIGHT_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
108 regler: 92 indbyggede (C#) 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-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. |
| 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 |