sqmSQLTool · Inventory & Dokumentation · 2026

Inventory & Doku

Transparenz auf Knopfdruck.

Wer betreibt was auf welchem Server, in welchem Patch-Stand, mit welchen Datenbanken - beantwortet in Sekunden statt Stunden.

HTML-Reports CSV-Export Patch-Compliance Multi-Instanz Zentrales Archiv

Uwe Janke · Senior SQL Server DBA · dtcSoftware

📋 InstanceInventory — SQL01\PROD — 2026-05-20
Instanz
VersionSQL Server 2022 (16.0.4175.1)
EditionDeveloper Edition (64-bit)
Patch-StandCU17 - aktuell
Max Memory32.768 MB
Datenbanken (5)
FinanzenFULL • 42.5 GB • Backup: heute 20:14
ControllingFULL • 8.1 GB • Backup: heute 20:14
StagingDBSIMPLE • 1.2 GB • kein Backup
AlwaysOn AG: AG_Prod
SQL01 (Primary)SYNCHRONIZED
SQL02 (Secondary)SYNCHRONIZED

Motivation

Was fehlende Dokumentation kostet

💥

Personalwechsel = Wissenverlust

Welche Datenbanken liegen auf SQL03? Wer ist DB-Owner von "Archiv_alt"? Recovery-Modell korrekt gesetzt? Ohne Dokumentation beginnt die Suche bei Null.

🕵️

Audit: Manuelle Recherche

Patch-Stand aller Instanzen? Privilegierte Accounts? Zertifikat-Ablaufdaten? Ohne Werkzeug bedeutet jede Auditfrage Stunden manuelle Arbeit auf dutzenden Servern.

Stoerfall: keine Baseline

"War das gestern schon so?" Ohne regelmaessige Snapshots ist unbekannt ob eine Konfigurations-Abweichung alt oder neu ist. Ursachenanalyse dauert Stunden statt Minuten.

📉

Wachsender Disk-Verbrauch unbemerkt

Datenbanken wachsen still. Erst wenn der Platz ausgeht gibt es eine Meldung - dann ist es zu spaet. Prognose-Daten fehlen komplett.

✓ sqmSQLTool liefert alle diese Informationen automatisiert, regelmaessig und zentral abgelegt - ohne manuelle Abfragen auf jedem Server einzeln.

Ueberblick

Vier Kategorien. Ein Modul.

📋

Inventar

Vollstaendiger Snapshot einer Instanz: Version, Datenbanken, Logins, AG, Jobs, Konfiguration.

📑

Datenbank-Doku

Pro Datenbank: Dateien, Groessen, Autogrowth, Backup-Zeiten, Objekte, User - als HTML-Report.

🛡️

Patch-Compliance

Vergleich installierter Build gegen aktuelle CUs. Ampel-Status pro Instanz und Version.

📊

Betriebs-Reports

Disk-Prognose, AG-Health, Zertifikat-Ablauf, AutoGrowth, SPN-Status - taeglich automatisiert.

1
Befehl je Report
Kein Skript zusammenstellen, kein SSMS oeffnen - direkt aus PowerShell.
n
Instanzen parallel
Pipeline-faehig: alle Instanzen in einem Aufruf, ein konsolidierter Report.
Zentrales Archiv
CentralPath: alle Reports landen automatisch an einem definierten Ablageort.

Inventar

Invoke-sqmInstanceInventory

Ein vollstaendiger Snapshot einer SQL-Server-Instanz - TXT (lesbar) + CSV (maschinenlesbar). Automatisch im zentralen Archiv abgelegt.

Was erfasst wird

ℹ️ Instanz-InfoVersion, Edition, Patch-Level, Collation, Auth-Modus, MAXDOP, Max/Min Memory, CPU-Anzahl
💾 DatenbankenName, Status, Recovery Model, Groesse (MB), letztes Full-Backup, Owner, Erstelldatum
🔑 LoginsName, Typ (Windows/SQL), aktiv/inaktiv, Server-Rollen
🔗 Linked ServerName, Produkt, Provider, Datenquelle
🗓️ Agent-JobsName, aktiv/inaktiv, Owner, letzte Ausfuehrung + Status
⚙️ sp_configureNur Abweichungen vom Standard - sofort sichtbar was veraendert wurde
🔄 AlwaysOnAG-Name, Primary, Replicas + Rollen, Listener (Port/IP), Sync-Status

Aufruf

# Einzelne Instanz
Invoke-sqmInstanceInventory `
    -SqlInstance 'SQL01\PROD' `
    -OutputPath  'C:\Reports\SQL'

# Alle Instanzen aus einer Liste
'SQL01','SQL02','SQL03' | Invoke-sqmInstanceInventory

Ausgabedateien

Aufruf
*.txt
Lesbarer Report
+
*.csv
Excel/SIEM
Central­Path
Archiv

Dateiname: InstanceInventory_SQL01_PROD_2026-05-20.txt

Datenbank-Dokumentation

Export-sqmDatabaseDocumentation

Self-contained HTML-Report pro Instanz - kein externes CSS, direkt im Browser oeffenbar. Farbkodierte Status-Badges.

Inhalt je Datenbank

EigenschaftenStatus, Recovery, Collation, Owner, Erstelldatum, Compat-Level
DateigroessenData / Log separat, inkl. Autogrowth-Einstellungen und Wachstumstyp
Backup-AlterLetztes FULL / DIFF / LOG mit Altersangabe - sofort sichtbar ob Backup fehlt
CHECKDBDatum des letzten Integritaets-Checks mit Alterswarnung
VLF-CountAnzahl Virtual Log Files (ab SQL 2016) - zu hohe Werte werden markiert
ObjekteAnzahl Tabellen, Views, Procs, Functions, Trigger, Synonyme
DB-UserName, Login-Name, Typ - Orphaned Users sofort erkennbar

HTML-Report Aufbau

📑 Database Documentation — SQL01\PROD
Inhaltsverzeichnis
🔗 FinanzenOK
🔗 ControllingOK
🔗 StagingDB⚠ SIMPLE
Finanzen - Details
Backup FULLvor 4h
CHECKDBvor 2 Tagen
VLF-Count312 ⚠
Data-Groesse42.5 GB

Aufruf

Export-sqmDatabaseDocumentation `
    -SqlInstance 'SQL01' `
    -Database    'Finanzen*' `
    -OutputPath  'C:\Reports'

Dateiname: DatabaseDoc_SQL01_20260520_2015.html

Compliance

Patch-Stand auf einen Blick

Invoke-sqmPatchAnalysis - Vergleicht installierten Build mit der eingebetteten Referenztabelle aller bekannten CUs. Ampel-Status und konkrete Empfehlung je Instanz.

InstanzVersionBuildStandEmpfehlung
SQL012022 16.0.4175 CU17 - aktuell Kein Handlungsbedarf
SQL022022 16.0.4135 CU14 - 3 hinter aktuell CU-Update empfohlen
SQL032019 15.0.2000 RTM - 29 hinter aktuell Sofort patchen
SQL042019 15.0.4405 CU29 - aktuell Kein Handlungsbedarf

Referenztabelle eingebettet: SQL 2016 SP3, 2017 bis CU40, 2019 bis CU29, 2022 bis CU17.

Aufruf - alle Instanzen

# Alle Instanzen analysieren, CSV speichern
'SQL01','SQL02','SQL03','SQL04' |
    Invoke-sqmPatchAnalysis `
        -OutputPath 'C:\Reports\Patch'

# Nur veraltete anzeigen
'SQL01','SQL02','SQL03','SQL04' |
    Invoke-sqmPatchAnalysis |
    Where-Object { -not $_.IsLatest }

Was der Betriebsleiter bekommt

  • Tabellarische Patch-Uebersicht aller Instanzen
  • Ampelstatus: UpToDate / MinorUpdate / MajorUpdate / Critical
  • BuildsBehind: konkrete Anzahl versaeumter CUs
  • Recommendation: direkt zitierbare Empfehlung
  • CSV-Export fuer Ticketsystem oder Audit-Bericht

Konfigurationsvergleich

Compare-sqmServerConfiguration

Soll/Ist-Vergleich zweier Instanzen. Vor/nach Migration, Produktiv vs. Test, Knoten 1 vs. Knoten 2 in einem AG-Paar.

# Produktiv vs. Test vergleichen
Compare-sqmServerConfiguration `
    -SourceInstance 'SQL01\PROD' `
    -TargetInstance 'SQL02\TEST' `
    -CompareDatabases

# Ergebnis: nur Abweichungen
Setting              SourceValue  TargetValue
MaxMemory            32768        8192       <-- Abweichung
MaxDOP               4            8          <-- Abweichung
Collation            Latin1...    Latin1...  (OK)
CostThreshold        50           25         <-- Abweichung
ℹ Ohne -CompareDatabases: nur Instanz-Konfiguration. Mit dem Schalter zusaetzlich Datenbankebene (Owner, RecoveryModel, Collation).

Typische Einsatzfaelle

1
Vor der Migration

Quell- und Zielserver vergleichen - sicherstellen dass alle relevanten Settings uebernommen wurden.

2
AG-Knoten-Parity

Beide Knoten eines AlwaysOn-Paares muessen identisch konfiguriert sein. Abweichungen sind Risiken.

3
After Change-Verifikation

Nach einem Change-Request nachweisen dass nur die geplanten Werte geaendert wurden.

4
Audit: Konfigurationsstandard

Goldener Standard-Server vs. produktive Instanz. Abweichungen als CSV an den Auditor.

Taeglich Betrieb

Reports fuer den laufenden Betrieb

💾

Disk-Prognose

Get-sqmDiskSpaceReport

D:\68 % frei
E:\18 % frei
F:\8 % — 11 Tage

Zeigt Wachstums-Rate und "Days until full" basierend auf 30-Tage-Verlauf.

📈

AutoGrowth-Analyse

Get-sqmAutoGrowthReport

Markiert prozentbasiertes Wachstum, zu kleine Schritte (<64 MB) und unbegrenzte Log-Dateien als Warnung.

🔄

AG-Health Report

Get-sqmAgHealthReport

FinanzenSYNC • 0 MB
ReportingSYNC • 82 MB

Redo-Queue und Send-Queue je DB. Warnschwellen konfigurierbar.

🚧

Blocking Report

Get-sqmBlockingReport

Blocking-Ketten mit Head-Blocker, SQL-Text, Wartedauer und betroffenen Ressourcen - fuer sofortige Diagnose.

🔐

Zertifikat-Ablauf

Get-sqmCertificateReport

HADR_Cert248 Tage
TDE_Cert62 Tage
SB_CertABGELAUFEN

Zweck: AlwaysOn / TDE / ServiceBroker / Backup. ALERTS.csv mit nur kritischen Eintraegen.

🆔

SPN-Report

Get-sqmSpnReport

Kerberos-SPN-Registrierung pruefen. Fehlende SPNs werden mit fertigen setspn.exe-Befehlen geliefert.

Zentrales Archiv

Alle Reports. Ein Ort.

CentralPath: Jede Report-Funktion kopiert ihr Ergebnis automatisch in den konfigurierten Ziel-Pfad - ohne zusaetzliche Schritte.

Einmalig konfigurieren

# Zentrales Archiv setzen (einmalig)
Set-sqmConfig `
    -CentralPath '\\fileserver\SQLReports' `
    -OutputPath  'C:\Reports\Local'

# Ab jetzt: jede Funktion kopiert automatisch
Invoke-sqmInstanceInventory -SqlInstance 'SQL01'
# Ergebnis landet in:
#  C:\Reports\Local\InstanceInventory_SQL01_...txt
#  \\fileserver\SQLReports\InstanceInventory_SQL01_...txt

Was automatisch repliziert wird

InstanceInventory DatabaseDoc PatchAnalysis DiskSpaceReport AgHealthReport CertReport SpnReport
ℹ Verzeichnisstruktur wird auf dem CentralPath flach gehalten (kein Unterordner). Dateinamen enthalten Instanzname + Datum - keine Kollisionen bei mehreren Instanzen.

Resultierende Ordnerstruktur (Beispiel)

\\fileserver\SQLReports\
  InstanceInventory_SQL01_PROD_2026-05-20.txt
  InstanceInventory_SQL01_PROD_2026-05-20.csv
  InstanceInventory_SQL02_PROD_2026-05-20.txt
  InstanceInventory_SQL03_TEST_2026-05-20.txt
  DatabaseDoc_SQL01_PROD_20260520_2015.html
  DatabaseDoc_SQL01_PROD_20260520_2015.csv
  PatchAnalysis_20260520_2014.csv
  DiskSpaceReport_SQL01_PROD_2026-05-20.txt
  DiskSpaceReport_SQL01_PROD_2026-05-20.csv
  CertReport_SQL01_PROD_20260520_2013.txt
  CertReport_SQL01_PROD_20260520_2013_ALERTS.csv
  AgHealthReport_SQL01_PROD_2026-05-20.txt
✓ Teamlead und Betriebsleiter haben lesenden Zugriff auf den Share - alle Reports tagesaktuell ohne aktiven Eingriff eines DBAs.

Skalierung

Alle Instanzen. Ein Aufruf.

Alle Report-Funktionen sind Pipeline-faehig. Instanzliste aus Datei, Datenbank oder AD - sqmSQLTool verarbeitet alle parallel.

# Instanzliste aus Textdatei
Get-Content 'C:\Config\instances.txt' |
    Invoke-sqmInstanceInventory

# Patch-Analyse aller Produktiv-Instanzen
Get-Content 'C:\Config\prod_instances.txt' |
    Invoke-sqmPatchAnalysis `
        -OutputPath '\\fileserver\SQLReports\Patch'

# Nur veraltete als Tabelle - fuer Ticket
Get-Content 'C:\Config\prod_instances.txt' |
    Invoke-sqmPatchAnalysis |
    Where-Object { -not $_.IsLatest } |
    Select-Object SqlInstance,PatchStatus,BuildsBehind,Recommendation |
    Format-Table -AutoSize
-ContinueOnError: eine nicht erreichbare Instanz unterbricht nicht den gesamten Lauf.

Empfohlener Scheduler-Rhythmus

JobRhythmusBefehl
InventarWoechtentlichInvoke-sqmInstanceInventory
DB-DokuWoechentlichExport-sqmDatabaseDocumentation
Patch-AnalyseWoechentlichInvoke-sqmPatchAnalysis
Disk-PrognoseTaeglichGet-sqmDiskSpaceReport
AG-HealthTaeglichGet-sqmAgHealthReport
ZertifikateTaeglichGet-sqmCertificateReport

Einfachste Einrichtung

Alle Jobs koennen als SQL Agent Job oder Windows Task Scheduler Aufgabe eingerichtet werden - einmal konfiguriert, laufen sie vollautomatisch und speichern im CentralPath.

Referenz

Quick Reference

AufgabeFunktionAusgabe
Instanz-SnapshotInvoke-sqmInstanceInventoryTXT + CSV
DB-DokumentationExport-sqmDatabaseDocumentationHTML + CSV
Patch-ComplianceInvoke-sqmPatchAnalysisKonsole + CSV
Config-VergleichCompare-sqmServerConfigurationKonsole
Disk-PrognoseGet-sqmDiskSpaceReportTXT + CSV
AG-HealthGet-sqmAgHealthReportTXT + CSV
Zertifikat-AblaufGet-sqmCertificateReportTXT + CSV + ALERTS.csv
AutoGrowth-PruefungGet-sqmAutoGrowthReportKonsole
Blocking-AnalyseGet-sqmBlockingReportKonsole + CSV
SPN-AuditGet-sqmSpnReportTXT + CSV
Zentrales ArchivSet-sqmConfig -CentralPathautomatisch

Schluessel-Parameter

-OutputPathZiel-Verzeichnis fuer Report-Dateien
-ContinueOnErrorFehler je Instanz ueberspringen
-CompareDatabasesVergleich auch auf DB-Ebene
-WarnThresholdPctWarn-Schwelle Disk-Freiraum (Standard: 20 %)
-CriticalThresholdPctKritisch-Schwelle (Standard: 10 %)
-WarningThresholdDaysZertifikat-Warnung (Standard: 90 Tage)
-HistoryDaysZeitraum fuer Disk-Wachstumsprognose

Sprache umschalten

# Reports auf Englisch
Set-sqmConfig -Language 'en-US'
# Zurueck zu Deutsch
Set-sqmConfig -Language 'de-DE'
sqmSQLTool - Hauptmodul AlwaysOnSetup - AG-Einrichtung SQLSetupTool - Basis-Installation SQLMigration - Datenbankmigrationen DeadlockCollector - Deadlock-GUI

Zusammenfassung

Was Ihr Team gewinnt

📋 Fuer den Betriebsleiter

Patch-Compliance auf Knopfdruck

Jederzeit abrufbar: welche Instanzen sind veraltet, wie dringend ist der Handlungsbedarf?

Keine Ueberraschungen bei Disk-Engpaessen

Prognose liefert 10+ Tage Vorlaufzeit - genug fuer Kapazitaetsplanung ohne Nacht-Notfaelle.

Audit-Berichte ohne DBA-Aufwand

Zertifikate, Logins, Konfiguration - alles tagesaktuell im Share. Der Auditor greift selbst zu.

📊 Fuer den Teamlead

Onboarding beschleunigt

Neue Kollegen bekommen den aktuellen Inventar-Report - kein wochenlanger Einlese-Aufwand.

Change-Verifikation automatisiert

Compare-sqmServerConfiguration belegt nach jedem Change dass nur das Geplante geaendert wurde.

Migration sicher vorbereitet

Vor jeder Migration Soll/Ist-Vergleich - keine vergessenen Settings mehr auf dem Zielsystem.

11
Report-Funktionen
Inventar, Doku, Patch, Betrieb
0
Manuelle Schritte nach Setup
CentralPath + Scheduler = vollautomatisch
n
Instanzen parallel
Pipeline - skaliert auf die gesamte Landschaft