- .NET 10 solution with Core, Connectivity, Rules, Contracts, Agent, Web and Hub - Capability model gating collectors and rules by SQL Server version (2000 and later); rules that cannot run are reported as not measurable, never as passed - Connectivity via Microsoft.Data.SqlClient with ODBC fallback for legacy instances, hardened monitoring session settings valid back to SQL Server 2000 - Support lifecycle rule (SQLI-VER-001) with lifecycle data shipped as a rule pack - Version-aware least-privilege permissions script, verified by integration tests against SQL Server in Docker (reads monitoring sources, cannot read customer data) - Forgejo Actions CI, contributing guide, code of conduct, issue templates, legacy version notes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
3 KiB
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.
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) ogODBC 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
LegacyFailureClassifierde fejlbeskeder, SqlClient faktisk giver mod 2000, 2005 og 2008 uden TLS 1.2? - Returnerer
InstanceProbekorrekte værdier på 2000 (SERVERPROPERTYfor 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_configureogmsdb-tabellerne kan læses af et almindeligt login med en bruger imsdb.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:
- Begrænset overvågning uden forhøjede rettigheder. Waits og error log vises som ikke målbar.
- 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).