# Legacy-versioner: SQL Server 2000–2016 SQLInsight Pro overvåger alle versioner fra SQL Server 2000. Denne side beskriver de særlige forhold for de ældste versioner, og hvad der skal verificeres i Fase 0-spiken. ## Forbindelse | Version | Problem | Løsning | |---|---|---| | 2000 | Microsoft.Data.SqlClient understøtter ikke TDS 7.0/7.1 | ODBC (`System.Data.Odbc`) med en driver, der understøtter 2000 | | 2005, 2008, 2008 R2 uden TLS 1.2-patch | Kun TLS 1.0/1.1; moderne Windows og .NET afviser handshaken | Installér TLS 1.2-opdateringen på serveren (anbefalet), ellers ODBC med `Encryption=Optional` | | 2012, 2014 uden TLS 1.2-patch | Som ovenfor | Som ovenfor | Agenten bruger som standard `Provider=Auto`: den prøver SqlClient først og falder kun tilbage til ODBC, når fejlen ligner en versions- eller TLS-inkompatibilitet (`LegacyFailureClassifier`). Login- og netværksfejl giver ikke fallback, for så ville den rigtige fejl blive skjult. Når fallback bruges, logges en advarsel. ## Ikke relevant eller ikke målbar Regler om noget, versionen ikke har (Query Store før 2016, system_health før 2008, hukommelseskolonner i plan cache før 2016 SP2 …), vises som **ikke relevant for SQL Server 20xx** i en sammenklappet liste på instansens side. De tæller ikke med i "ikke målbare" på oversigten, i API'et eller i rapportens kontroller. **Ikke målbar** er forbeholdt det, der burde kunne måles: manglende rettigheder, en fejl eller en indstilling (fx Always On, der ikke er slået til). ## Spike: det skal verificeres på rigtige VM'er Versionerne 2000–2016 findes ikke som containere, så de kan ikke testes i CI med Testcontainers. - [ ] Hvilken ODBC-driver virker mod SQL Server 2000 fra agentens OS? Kandidater: den indbyggede Windows-driver `SQL Server` (sqlsrv32) og `ODBC Driver 17 for SQL Server`. ODBC Driver 18 understøtter formentlig ikke 2000. - [ ] Kan agenten på Linux nå SQL 2000 overhovedet? Hvis ikke, kræver legacy-overvågning en Windows-agent. - [ ] Rammer `LegacyFailureClassifier` de fejlbeskeder, SqlClient faktisk giver mod 2000, 2005 og 2008 uden TLS 1.2? - [ ] Returnerer `InstanceProbe` korrekte værdier på 2000 (`SERVERPROPERTY` for ukendte properties skal give NULL)? - [ ] Bliver sessionsindstillingerne (`LOCK_TIMEOUT`, `DEADLOCK_PRIORITY LOW`, `READ UNCOMMITTED`) accepteret via ODBC på alle versioner? Resultatet afgør, om legacy-laget forbliver en del af `SQLInsight.Connectivity` eller bliver et separat modul eller en separat agent. **Testmiljø:** Én VM pr. version (2000 SP4, 2005 SP4, 2008 R2 SP3, 2012 SP4, 2014 SP3, 2016 SP3), gerne som snapshots, så de kan nulstilles. Der skal bruges licenser og installationsmedier. ## Rettigheder på SQL Server 2000 `VIEW SERVER STATE` findes ikke i SQL Server 2000. Det betyder: - `sysprocesses`, `sysdatabases`, `sysfiles`, `sp_configure` og `msdb`-tabellerne kan læses af et almindeligt login med en bruger i `msdb`. - `DBCC SQLPERF(WAITSTATS)` og læsning af error log kræver forhøjede rettigheder (i praksis sysadmin). Kunden vælger derfor pr. SQL 2000-instans mellem: 1. **Begrænset overvågning** uden forhøjede rettigheder. Waits og error log vises som *ikke målbar*. 2. **Fuld overvågning** med sysadmin. Det vises tydeligt i UI'et som en risiko. `db/permissions/grant-least-privilege.sql` afviser at køre på 2000 og henviser hertil. Et separat script til 2000 kommer med spiken. ## Åbne punkter - Læsning af error log (`xp_readerrorlog`) kræver rettigheder, der varierer mellem versionerne. De skal kortlægges, før error log-collectoren bygges (Fase 1).