SQL Server Setup Tool — Automatisierte Standardinstallation | dtcSoftware

dtcSoftware · Uwe Janke · FI-TS München

SQL Server Setup Tool

Vollautomatische, domänenspezifische SQL Server Installation nach FI-TS Standard — von der Quelldatei bis zur gehärteten, überwachten Produktionsinstanz.

PowerShell 5.1+ dbaTools 2.x SQL 2019 · 2022 · 2025 sqmSQLTool Ola Hallengren WinForms GUI
Uwe Janke Stand: Mai 2026 Version 2.0

Was ist das SQL Server Setup Tool?

Das SQL Server Setup Tool standardisiert und automatisiert die vollständige Installation von Microsoft SQL Server in der FI-TS Bankenumgebung. Es ersetzt fehleranfällige manuelle Installationen durch einen geführten, reproduzierbaren Prozess — inklusive Laufwerksvorbereitung, Security Hardening und Wartungs-Automatisierung.

🖥️

WinForms GUI

Einfach zu bedienende grafische Oberfläche. Alle Parameter per Maus konfigurierbar — kein PowerShell-Wissen erforderlich.

🏢

Domänenspezifisch

Automatische Erkennung der AD-Domäne (HLB, CONTOSO …). Sortierung, Laufwerke, Sysadmin-Gruppen und Monitoring werden domänenspezifisch vorbelegt.

💽

FI-TS Laufwerkslayout

C: Binaries · F: System-DBs + Backup · G: Daten · H: Log · I: TempDB. Vollständig konfigurierbar, mit Domain-Override.

🔒

Security Hardening

SA-Obfuscation, AD-Sysadmin-Gruppen, NTFS-Berechtigungen, Policy-Aktivierung — alles Teil des automatischen PostInstall-Prozesses.

⚙️

16 PostInstall-Schritte

Vollständige Härtung nach SQL-Setup: Performance-Parameter, TempDB-Optimierung, Agent-Konfiguration, Backup-Jobs, Monitoring-Key.

🧩

Optionale Komponenten

SSRS, SSAS, SSMS, SSIS und TDP werden nach dem Core-Setup einzeln nachinstalliert — je nach Checkbox-Auswahl im Formular.

ℹ️
Technische Basis: Das Tool setzt auf dbaTools (Install-DbaInstance) für den eigentlichen SQL-Setup-Aufruf und auf das betriebseigene Modul sqmSQLTool für alle PostInstall-Aufgaben. Beide Module werden beim Start automatisch aus dem konfigurierten Netzwerk-Share geladen.

Die grafische Oberfläche

Das Formular startet mit domänenspezifisch vorbeleten Werten und führt durch alle Konfigurationsschritte. Lange Operationen (Robocopy, SQL-Setup) laufen in einem separaten Hintergrundthread — die GUI bleibt jederzeit bedienbar.

⚙️ SQL Server Setup - Standardisierte Installation
① SQL Server Version & Edition
Version:
2022
   Edition:
Developer
    🏢 Domain: HLB
② Instanzname
Instanzname:
MSSQLServer
 
Standard
  (leer / MSSQLServer = Standardinstanz)
③ Sortierung (Collation)
Sortierung:
SQL_Latin1_General_CP1_CI_AS
   ✓ Domain-Sortierung aktiv (HLB-Standard)
④ Service-Konto  (leer = NT SERVICE\MSSQLSERVER)
Konto (DOMAIN\User):
 
AD prüfen
   
Passwort:
••••••••
  ⚠️ AD-Prüfung zählt zur Lockout-Policy!
⑤ Plattenlayout
Layout-Quelle: Domain HLB  ·  Laufwerksbuchstaben aus INI, je Domain konfigurierbar
Installation:
C:
Daten:
G:
Log:
H:
TempDB:
I:
Backup:
F:
System-DBs (INSTALLSQLDATADIR): F:\ · Binaries (INSTALLSHAREDDIR): C:\Program Files\Microsoft SQL Server
⑥ Monitoring
Monitoring-Typ:
Service Monitoring
   Domain-Standard (HLB) = Typ 2 · Vollständiges Monitoring
⑦ Optionale Komponenten
SSRS (Reporting Services)
SSAS (Analysis Services)
SSMS (Management Studio)
SSIS (Integration Services)
TDP (IBM Spectrum Protect)
Sortierung für SSAS: identisch mit Instanz-Sortierung  ·  SSIS wird als Feature IS im SQL-Engine-Setup installiert
⑧ Aktionen
Quellen kopieren
Installation starten
Schließen
⑨ Protokoll
[09:42:11]SQL Server Setup Tool gestartet. [09:42:11]Konfiguration geladen. Domain: HLB [09:42:11]Sortierung: SQL_Latin1_General_CP1_CI_AS  ·  Quell-Share: \\srv\SQLSources [09:43:05]Phase 1: Quellen werden kopiert … robocopy läuft [09:48:32]Phase 1 abgeschlossen. 4,2 GB kopiert in 327 Sek. [09:48:35]Phase 2: SQL Server 2022 Developer wird installiert …
Phase 2 — SQL Server Installation läuft … bitte warten
Version & Edition — Comboboxen für SQL-Version (2019/2022/2025) und Edition (Developer/Standard/Enterprise). Edition-Liste passt sich automatisch an die gewählte Version an. Rechts: erkannte AD-Domäne.
Instanzname — Leer oder MSSQLServer = Standardinstanz. Beliebiger Name = benannte Instanz (MSSQL$NAME). Button „Standard" setzt auf MSSQLServer zurück.
Sortierung — Vollständige Liste aus Config\collations.txt. Domänenspezifische Vorgabe (HLB → SQL_Latin1_General_CP1_CI_AS) steht automatisch an erster Position.
Service-Konto — Leer = NT SERVICE\MSSQLSERVER (empfohlen). Bei AD-Konto: Button „AD prüfen" validiert Existenz und Passwort. Achtung: zählt zur Lockout-Policy!
Plattenlayout — Laufwerksbuchstaben gemäß FI-TS Standard: C: Binaries, F: System-DBs+Backup, G: Daten, H: Log, I: TempDB. Werte editierbar; domänenspezifisches Override via INI möglich.
Monitoring — Drei Stufen: Kein Monitoring · Service Monitoring · Vollständiges Monitoring. Standard und domänenspezifischer Wert werden aus der INI gelesen.
Optionale Komponenten — Jede Checkbox ist nur sichtbar wenn in der INI aktiviert. SSMS und SSIS sind standardmäßig angehakt. SSIS wird als Feature IS in den SQL-Engine-Setup integriert.
Aktionen — „Quellen kopieren" startet Phase 1 (Robocopy). „Installation starten" führt Phasen 2–4 durch (Bestätigungsdialog erscheint vorher). Beide Operationen laufen im Hintergrundthread.
Protokoll — Echtzeit-Log aller Schritte (RichTextBox, Consolas, grün auf schwarz). Zeitstempel, Phasenmeldungen, Fehler und Warnungen erscheinen hier während die Installation läuft.

Konfiguration — settings.ini

Alle Parameter werden zentral in Config\settings.ini gepflegt. Das Tool liest die INI beim Start, erkennt die AD-Domäne und wählt automatisch die passenden domänenspezifischen Werte. Kein Quellcode-Eingriff nötig.

Zero-Touch für neue Domäne: Neue Domäne einbinden = einen [DiskLayout_NEWDOMAIN]-Block und Einträge in [Collations], [SysadminGroups] und [Monitoring] anlegen. Das Tool erkennt die Domäne automatisch und verwendet die neuen Werte.

Wichtige INI-Sektionen

[General]
DefaultVersion2022Vorselektierte Version im Formular
DefaultEditionDeveloperVorselektierte Edition
DefaultInstanceNameMSSQLServerStandardinstanz-Name
SourceShare\\srv\SQLSourcesUNC-Pfad zu den Installationsmedien
[DiskLayout_Standard]  →  Override: [DiskLayout_HLB]
InstallDrive = CC:\Program Files\Microsoft SQL ServerINSTALLSHAREDDIR — SQL-Binaries
DataDrive = GG:\Daten\SQL\MSSQLSERVER\DATABenutzerdatenbankdateien (.mdf, .ndf)
LogDrive = HH:\Daten\SQL\MSSQLSERVER\LOGTransaktionsprotokolle (.ldf)
TempDrive = II:\Daten\SQL\MSSQLSERVER\DATA+LOGTempDB-Dateien
BackupDrive = FF:\Daten\SQL\Backup & F:\Microsoft SQL ServerBackups + INSTALLSQLDATADIR (System-DBs)
[Installation]
FeaturesEngine,FullText,ISSQL-Features — IS (SSIS) wird bei abgewählter Checkbox dynamisch entfernt
InstantFileInittrueSofortige Dateiinitialisierung — beschleunigt Dateioperationen erheblich
TempDbFileCount2Initial; PostInstall optimiert auf CPU-Anzahl (4–8 Dateien)
TempDbFileSizeMB1024Initiale TempDB-Dateigröße in MB
TcpEnabled / NpEnabledtrue / falseTCP aktiv, Named Pipes deaktiviert
BrowserSvcDisabledtrueSQL Browser Service nach Install deaktivieren
[OptionalComponents]
SSRS_Enabled = trueCheckbox anzeigenSSRS_SourcePath = UNC-Pfad zum Installer
SSAS_Enabled = trueCheckbox anzeigenvia SQL-Setup.exe /FEATURES=AS
SSMS_Enabled = trueCheckbox anzeigen (Standard: ✓)SSMS-Setup*.exe unattended
SSIS_Enabled = trueCheckbox anzeigen (Standard: ✓)Feature IS in SQL-Engine-Setup
TDP_Enabled = trueCheckbox anzeigenIBM Spectrum Protect (TSM/TDP) Client
[SerialNumbers]
SQL2022_Developer = (leer)Developer benötigt keinen Key
SQL2022_Standard = XXXXX-…LizenzschlüsselAutomatisch ausgewählt anhand Version+Edition
SQL2025_Developer-Standard = XXXXX-…SQL 2025 verwendet neue Editions-Bezeichnungen
⚠️
Sicherheitshinweis: Die settings.ini enthält Lizenzschlüssel. Datei nur für berechtigte Administratoren zugänglich ablegen. Für den Share-Pfad (\\srv\SQLSources) Read-Zugriffssteuerung über AD-Gruppe empfohlen.

Installationsablauf

Der Prozess gliedert sich in vier Phasen. Alle Phasen laufen im Hintergrundthread — das Formular bleibt bedienbar. Phase 1 kann separat vorab durchgeführt werden; Phasen 2–4 laufen sequenziell in einem Durchgang.

1

Vorbereitung

  • Robocopy vom Share
  • SQL_Install inkl. Updates
  • SSRS, SSMS, TDP-Quellen
  • Lokales Zielverzeichnis:
    C:\SQLSources\SQL2022\
2

SQL Server Install

  • Install-DbaInstance
  • Verzeichnisse erstellen
  • Slipstream-Updates
  • Warten auf SQL-Bereitschaft
  • IFI aktivieren
3

Optionale Komponenten

  • SSAS (Setup.exe /AS)
  • SSRS (eigener Installer)
  • TDP-Client
  • SSMS (unattended)
4

PostInstall

  • NTFS-Berechtigungen
  • Performance-Parameter
  • Security Hardening
  • Ola-Maintenance
  • Monitoring-Key

Phase 2 — Wichtige Install-DbaInstance Parameter

ParameterWertQuelle
FeatureEngine, FullText, IS[Installation] Features (IS entfällt bei abgewählter SSIS-Checkbox)
InstallPathC:\Program Files\Microsoft SQL ServerInstallDrive + InstallSubPath
SystemDbPathF:\Microsoft SQL ServerBackupDrive + SysDbSubPath = INSTALLSQLDATADIR
DefaultFile/LogPathG:\Daten\SQL\MSSQLSERVER\DATADataDrive, LogDrive, TempDrive
AdminAccountBUILTIN\Administrators[Installation] SysAdminAccounts
PerformVolumeMaintenanceTasks$true[Installation] InstantFileInit = true
UpdateSourcePath…\SQL_Install\Updates\Automatisch wenn Unterordner vorhanden (Slipstream)
SqlTempDbFileCount2[Installation] TempDbFileCount (PostInstall optimiert auf CPU-Basis)
ℹ️
Bereitschaftsprüfung: Nach Abschluss des SQL-Setups wartet das Tool bis zu 30 Sekunden (15 × 2 Sek.) auf eine erfolgreiche SQL-Verbindung (Connect-DbaInstance). Erst dann starten Phase 3 und Phase 4.

PostInstall — 16 Härtungsschritte

Der PostInstall-Prozess konfiguriert und härtet die frisch installierte SQL-Instanz nach FI-TS Standard. Kritische Schritte brechen den Prozess bei Fehler ab. Unkritische protokollieren eine Warnung und fahren fort.

1

NTFS-BerechtigungenKritisch

Invoke-sqmNtfsSetup — Dienstkonten via SMO/WMI ermitteln, NTFS setzen, Backup vorher erstellen.

2

Performance-ParameterKritisch

Max Memory = 90% RAM · MAXDOP = min(8, CPU) · Cost Threshold for Parallelism = 50

3

SQL Server AgentKritisch

Agent-Dienst auf AutoStart setzen und starten. Basis für alle nachfolgenden Job-Erstellungen.

4

TempDB-OptimierungKritisch

Dateianzahl = max(4, min(8, CPU-Anzahl)). Größe/Wachstum aus INI. Dateien auf I: verteilt.

5

Recovery-Modell FULLKritisch

Systemdatenbanken (master, msdb) auf FULL stellen via Invoke-sqmSetDatabaseRecoveryMode.

6

SQL Browser deaktivierenBedingt

Nur wenn BrowserSvcDisabled = true in INI. Fehler = Warnung, nicht kritisch.

7

AD-Sysadmin-GruppenBedingt

Domänenspezifische AD-Gruppe zur sysadmin-Rolle hinzufügen. Ergebnis steuert Schritt 8.

8

SA-ObfuscationBedingt

Nur wenn Schritt 7 mind. eine Gruppe zugewiesen hat. SA umbenennen + Zufallspasswort setzen.

9

Monitoring-KeyKritisch

Registry-Schlüssel via Invoke-sqmMonitoringKey. Typ 0/1/2 aus Formular-Auswahl.

10

Instanz-ValidierungKritisch

Best-Practice-Check (Get-sqmSQLInstanceCheck): Konfiguration, Dienststatus, Erreichbarkeit.

11

Custom PostInstall-ScriptOptional

Wenn Config\Scripts\PostInstall.ps1 vorhanden: standortspezifische Erweiterungen ohne Tool-Eingriff.

12

Ola Hallengren SetupOptional

GitHub (neueste Version) oder lokaler Fallback (OlaSourcePath). Basis für Schritte 13–15.

13

Maintenance JobsOptional

IndexOptimize - USER_DATABASES · IntegrityCheck - ALL_DATABASES (New-sqmOlaMaintenanceJobs).

14

System-DB Backup JobOptional

FITS-SystemDatabases-FULL · tägliches Backup von master, model, msdb nach F:\Daten\SQL\Backup.

15

User-DB Backup JobsOptional

FITS-UserDatabases-FULL (wöchentlich) · DIFF (täglich) · LOG (stündlich).

16

Splunk Universal ForwarderBedingt

Nur wenn SplunkEnabled = true. Invoke-sqmSplunkConfiguration setzt MSSQL1_Log-Umgebungsvariable.

🔑
SA-Obfuscation Sicherheitsbedingung: Schritt 8 wird nur ausgeführt wenn Schritt 7 erfolgreich mindestens eine AD-Gruppe zur sysadmin-Rolle hinzugefügt hat. So ist garantiert dass immer ein alternativer Sysadmin-Zugang existiert bevor der SA-Account verschleiert wird. Das generierte Zufallspasswort erscheint im Log — sicher verwahren!

Domänenlogik

Das Tool erkennt den NetBIOS-Namen der AD-Domäne beim Start automatisch. Für jede bekannte Domäne können spezifische Werte in der settings.ini hinterlegt werden. Fehlende Domäneneinträge fallen auf den Standard-Wert zurück.

Einstellung
HLB
CONTOSO
Sortierung
SQL_Latin1_General_CP1_CI_AS
Latin1_General_CI_AS
Laufwerke
[DiskLayout_HLB] (eigene Sektion)
[DiskLayout_Standard]
Monitoring-Typ
2 — Vollständiges Monitoring
2 — Vollständiges Monitoring
Sysadmin-Gruppe
HLB\Fg_DC_SqlAdminAll_Mod
CONTOSO\Rg_SQL_Sysadmin

Eigene Domäne hinzufügen

# settings.ini — neue Domäne "ACME" einbinden 
 
[Collations] 
Domain_ACME = Latin1_General_100_CI_AS_KS_WS 
 
[DiskLayout_ACME] 
DataDrive = D 
LogDrive = E 
TempDrive = F 
BackupDrive = G 
InstallDrive = C 
 
[SysadminGroups] 
Domain_ACME = ACME\GRP_SQL_Admins 
 
[Monitoring] 
Domain_ACME = 2
ℹ️
Die Domänenerkennung nutzt [System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().DomainName. In Arbeitsgruppenumgebungen ohne Domain greifen alle Standard-Fallback-Werte.

Möglichkeiten im Überblick

Was das SQL Server Setup Tool kann — von der einfachen Developer-Installation bis zur vollständig gehärteten Enterprise-Instanz mit Monitoring und Backup-Automatisierung.

FähigkeitDetails
✅ SQL 2019 / 2022 / 2025 Alle drei aktuellen Versionen. SQL 2025 mit eigenen Editions-Bezeichnungen (Developer-Standard, Developer-Enterprise).
✅ Alle Editionen Developer (kein Key nötig), Standard, Enterprise. Produktschlüssel automatisch aus INI gewählt.
✅ Standard- & benannte Instanzen Instanzname frei wählbar. Alle Pfade, Dienstkonten und Registry-Einträge werden automatisch angepasst.
✅ Domänenspezifische Konfiguration Sortierung, Laufwerke, Monitoring, Sysadmin-Gruppen — alles pro Domäne steuerbar ohne Quellcode-Änderung.
✅ Slipstream-Updates Wenn Updates-Unterordner im Quellverzeichnis vorhanden, werden CUs automatisch in den Setup integriert.
✅ Optionale SQL-Features SSIS (IS) über Checkbox steuerbar. Entfernung aus Feature-Array erfolgt dynamisch vor dem Setup-Aufruf.
✅ SSAS-Sortierungs-Automatik Analysis Services erhält automatisch dieselbe Sortierung wie die SQL-Instanz. Keine manuelle Abstimmung nötig.
✅ IFI (Instant File Initialization) Sofortige Dateiinitialisierung aktiviert. Beschleunigt Datenbankoperationen erheblich (kein Nullen großer Dateien).
✅ TempDB-Auto-Optimierung PostInstall berechnet optimale Dateianzahl anhand CPU-Anzahl (4–8 Dateien) und konfiguriert Größe/Wachstum.
✅ Ola Hallengren Integration Maintenance Solution + 6 SQL Agent Jobs (IndexOptimize, IntegrityCheck, FULL/DIFF/LOG Backup, System-DB Backup) vollautomatisch.
✅ Hintergrundthread-GUI Installation läuft in separatem Runspace. GUI bleibt responsiv, Protokoll wird in Echtzeit aktualisiert.
✅ Custom PostInstall-Script Config\Scripts\PostInstall.ps1 — standortspezifische Erweiterungen ohne Tool-Modifikation.
✅ Splunk-Integration Optionale Konfiguration des Splunk Universal Forwarders (MSSQL1_Log-Env-Variable) als letzter PostInstall-Schritt.
❌ Nicht unterstützt AlwaysOn-Setup · Upgrade bestehender Instanzen · Cluster-Installation (eigene Werkzeuge vorgesehen).

Typischer Zeitbedarf

PhaseTypische DauerAbhängig von
Phase 1 — Quellen kopieren5–15 minNetzwerkgeschwindigkeit, Datenmenge (3–6 GB)
Phase 2 — SQL Server Install10–25 minAnzahl Features, Update-Größe, Server-Performance
Phase 3 — Optionale Komponenten5–20 minAuswahl (SSRS/SSAS/SSMS je ~5–10 min)
Phase 4 — PostInstall (16 Schritte)3–8 minGitHub-Erreichbarkeit (Ola-Download)
Gesamt (inkl. Phase 1)~25–70 minVollinstallation mit allen Komponenten