sqlinsight-pro/docs/legacy-versions.md
Claude f8aa0c307b
Some checks are pending
CI / Build og unit tests (push) Waiting to run
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
Fase 0: solution structure, capability model, rule engine, least-privilege script
- .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
2026-09-29 05:40:49 +00:00

3 KiB
Raw Permalink Blame History

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) 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).