DBA-Team · Tools

SQL Server AlwaysOn Setup Tool

Vollautomatische Konfiguration von Always On Availability Groups auf Windows Server Failover Clustern – mit WinForms-Oberfläche, PropertyGrid und Echtzeit-Protokoll.

SQL Server 2022 / 2025 Windows Server 2022 PowerShell 5.1+ FailoverClusters RSAT dbaTools ≥ 2.0 Version 1.0.0
Übersicht
Was das Tool leistet – auf einen Blick
🔍

Automatisches Cluster-Einlesen

Liest beim Start automatisch alle Cluster-Nodes, Listener-Namen, IP-Adressen, Ports und HADR-Status aus dem WSFC und befüllt das PropertyGrid.

⚙️

9-Schritte-Automatisierung

Von HADR-Aktivierung über Endpoint-Anlage bis zu AG-Erstellung und Listener-Konfiguration – alles per Klick, vollständig protokolliert.

🔐

Adaptive Verbindungsstrategie

Windows-Auth (Kerberos) wird bevorzugt. Bei fehlenden SPNs generiert das Tool automatisch ein temporäres SQL-Login und bereinigt es nach Abschluss.

🧹

WSFC-Cleanup

Erkennt und bereinigt verwaiste Cluster-Gruppen und Registry-Keys aus fehlgeschlagenen Vorversuchen – kein manuelles Aufräumen nötig.

📋

SPN-Anforderungsdatei

Generiert in Schritt 9 fertige setspn-Befehle als Textdatei für das AD-Team – mit Erklärung und Prüfbefehl.

🎨

Farbcodiertes Live-Log

Blau, Grün, Gelb, Rot – alle Aktionen mit Zeitstempel im Echtzeit-Protokoll. Exportierbar als RTF mit Farbgebung.

GUI-Schematik
Aufbau der WinForms-Oberfläche (1200 × 780 px, resizable)
🔷 SQL Server AlwaysOn Setup Tool v1.0.0
Konfiguration
① KONFIGURATION (PropertyGrid)
1 - Cluster
Cluster-Name
SQLCLUSTER01
Listener-Name
AG-LISTENER01
Listener-IP
10.0.1.50
Listener-Port
1433
2 - Nodes
Node 1
▶ SQLNODE01\MSSQLSERVER
SQL-Instanz
SQLNODE01\MSSQLSERVER
Hostname
SQLNODE01
AlwaysOn-Status
Disabled
Node 2
▶ SQLNODE02\MSSQLSERVER
Node 3
(leer)
3 - Availability Group
AG-Name
AG_PROD_01
Endpoint-Port
5022
Failover-Modus
Automatic ▾
Backup-Präferenz
Primary ▾
Test-Datenbank
AG_TestDB
Backup-Share
\\FILESERVER\SQLBackup
4 - SQL Service-Konto
Dienst-Konto
HLB\svc-sql-prod
Kennwort
••••••••••••
④ PROTOKOLL (Live-Log)
[10:14:22] === Cluster- und SQL-Informationen einlesen ===
[10:14:22] Cluster gefunden: SQLCLUSTER01
[10:14:23] Nodes: SQLNODE01, SQLNODE02
[10:14:23] Listener: AG-LISTENER01 IP: 10.0.1.50 Port: 1433
[10:14:24] Eingelesen: SQLCLUSTER01 – OK
 
[10:15:01] === Schritt 2: HADR aktivieren ===
[10:15:01] SQLNODE01: sp_configure 'hadr enabled', 1 ...
[10:15:03] SQLNODE01: HADR aktiviert – Dienst wird neu gestartet
[10:15:08] SQLNODE01: Warte auf SQL Server bereit (0/60s) ...
[10:15:14] SQLNODE01: SQL Server wieder erreichbar
[10:15:14] SQLNODE02: HADR aktiviert – Dienst wird neu gestartet
[10:15:22] === Schritt 3: Endpoint erstellen ===
[10:15:23] SQLNODE01: Endpoint 'Hadr_endpoint' (5022) angelegt
[10:15:23] SQLNODE02: Endpoint 'Hadr_endpoint' (5022) angelegt
[10:15:24] === Schritt 6: Availability Group anlegen ===
[10:15:25] CREATE AVAILABILITY GROUP [AG_PROD_01] ...
[10:15:31] AG_PROD_01 erfolgreich angelegt ✓
[10:15:32] SPN MSSQLSvc/SQLNODE02:1433 fehlt – Bitte AD-Team informieren
⑥ AG_PROD_01 erfolgreich konfiguriert SPN-Datei: C:\System\WinSrvLog\MSSQL\AlwaysOn_SPN_ADTeam_20260513.txt
Nr.ElementBeschreibung
PropertyGrid – Konfiguration Zeigt alle erkannten Cluster- und AG-Parameter in 4 Kategorien. Readonly-Felder (kursiv) werden automatisch eingelesen; editierbare Felder können angepasst werden. Enum-Felder (Failover-Modus, Backup-Präferenz) bieten Dropdown-Auswahl.
Konfiguration starten Startet nach Bestätigungs-Dialog die 9 Konfigurationsschritte sequenziell. Der Button ist während der Ausführung deaktiviert.
Weiter (versteckt) Wird nur eingeblendet, wenn SPNs fehlen und das temporäre SQL-Login manuell angelegt werden muss. Nach dem manuellen Schritt klicken, um fortzufahren.
Live-Protokoll (RichTextBox) Farbkodiertes Echtzeit-Log mit Zeitstempel für alle Aktionen. Hintergrund schwarz, Schrift farbig nach Status: Blau = Abschnitt, Grün = Erfolg, Gelb = Warnung, Rot = Fehler, Grau = Info.
Log löschen / Log speichern Log löschen leert die Anzeige. Log speichern öffnet einen SaveFileDialog und schreibt das farbige RTF-Log auf die Festplatte.
StatusStrip Zeigt den aktuellen Status der Aktion sowie den Pfad der zuletzt gespeicherten Ausgabedatei (SPN-Anforderung, Logfile).
Konfigurationsschritte
Das Tool führt 9 Schritte in fester Reihenfolge aus – übersprungene Schritte werden im Log ausgewiesen
1

SQL Service-Konto

Optional: Konto und Passwort per WMI (Win32_Service) auf allen Nodes ändern und Dienst neu starten.

2

HADR aktivieren

Always On per sp_configure 'hadr enabled', 1 auf allen Nodes aktivieren; Dienst-Neustart mit aktivem Bereitschaftstest (max. 2 Min. Wartezeit).

3

Endpoint erstellen

Datenbankspiegelungs-Endpoint (Port 5022) per T-SQL anlegen und starten. Port ist im PropertyGrid konfigurierbar.

4

CONNECT-Berechtigung

Windows-Login für das Dienst-Konto anlegen und GRANT CONNECT ON ENDPOINT auf alle Nodes erteilen.

5

Testdatenbank

Datenbank anlegen, Recovery-Modell FULL setzen, initiales Full-Backup auf den konfigurierten UNC-Share erstellen.

6

Availability Group anlegen

AG per reinem T-SQL (sqlcmd) anlegen, Replicas beitreten lassen, Autoseed aktivieren. sqlcmd statt dbaTools für frische Verbindungen nach HADR-Restart.

7

Listener konfigurieren

AG-Listener mit erkannter IP-Adresse und Port per ALTER AVAILABILITY GROUP … ADD LISTENER anlegen.

8

Status prüfen

AG-Synchronisierungsstatus und Replica-Rollen (Primary/Secondary) per DMV sys.dm_hadr_availability_replica_states ausgeben.

9

SPN-Prüfung

Fehlende MSSQLSvc-SPNs erkennen, fertige setspn-Befehle als Textdatei für das AD-Team exportieren.

PropertyGrid – Konfigurationsfelder
Alle editierbaren und automatisch erkannten Parameter im Überblick
Feld Kategorie Standardwert / Quelle Beschreibung
Cluster-Name 1 – Cluster readonly aus WSFC Name des Windows Failover Clusters
Listener-Name 1 – Cluster readonly aus WSFC DNS-Name des AG-Listeners (Netzwerkname-Ressource im Cluster)
Listener-IP 1 – Cluster readonly aus WSFC IP-Adresse der Cluster-IP-Ressource
Listener-Port 1 – Cluster readonly 1433 TCP-Port des Listeners – direkt aus der Cluster-Konfiguration
Node 1 / 2 / 3 2 – Nodes readonly aus WSFC Expandierbare Knoten mit SQL-Instanzname, Hostname und aktuellem AlwaysOn-Status
AG-Name 3 – Availability Group Listener-Rollenname Name der zu erstellenden Availability Group
Endpoint-Port 3 – Availability Group 5022 TCP-Port des Datenbank-Spiegelungs-Endpoints; muss auf allen Nodes und in der Firewall geöffnet sein
Failover-Modus 3 – Availability Group Automatic Automatic = synchrones Replikat mit autom. Failover; Manual = asynchron
Backup-Präferenz 3 – Availability Group Primary Primary / Secondary / PreferSecondary / None
Test-Datenbank 3 – Availability Group AG_TestDB Name der automatisch erstellten Datenbank, die per Autoseed verteilt wird
Backup-Share 3 – Availability Group UNC-Pfad Gemeinsam nutzbarer Share für das initiale Full-Backup, beschreibbar von allen Nodes
Dienst-Konto 4 – SQL Service-Konto aus WMI SQL Server Dienstkonto (Format DOMAIN\User), optional änderbar
Kennwort 4 – SQL Service-Konto Passwort des Dienstkontos (maskiert, wird nie in Logdateien gespeichert)
Service Principal Names (SPNs)
SPNs vor dem Setup setzen spart einen manuellen Eingriff
⚡ Empfehlung: SPNs vor dem Setup setzen
Sind die MSSQLSvc-SPNs für das SQL-Dienstkonto bereits im Active Directory registriert, läuft das Tool vollautomatisch durch – ohne manuellen Eingriff. Das Tool generiert in Schritt 9 die konkreten setspn-Befehle als Textdatei für das AD-Team.

✅ SPNs vorhanden

  • Windows-Auth (Kerberos) auf allen Nodes
  • Vollautomatischer Durchlauf
  • Kein manueller Eingriff nötig
  • Kein temporäres Login
  • "Weiter"-Button bleibt versteckt

❌ SPNs fehlen

  • SSPI-Fehler auf betroffenen Nodes
  • Tool pausiert, zeigt T-SQL-Block
  • Manuell per SSMS lokal ausführen
  • "Weiter"-Button einblenden → klicken
  • Temporäres Login wird am Ende entfernt

Benötigte SPNs (Beispiel)

# Je SQL-Node – Kurzname und FQDN
setspn -S MSSQLSvc/SQLNODE01:1433 HLB\svc-sql-prod
setspn -S MSSQLSvc/SQLNODE01.hlb.intern:1433 HLB\svc-sql-prod

setspn -S MSSQLSvc/SQLNODE02:1433 HLB\svc-sql-prod
setspn -S MSSQLSvc/SQLNODE02.hlb.intern:1433 HLB\svc-sql-prod

# AG-Listener
setspn -S MSSQLSvc/AG-LISTENER01:1433 HLB\svc-sql-prod
setspn -S MSSQLSvc/AG-LISTENER01.hlb.intern:1433 HLB\svc-sql-prod

# Prüfung:
setspn -L HLB\svc-sql-prod

Das Tool exportiert in Schritt 9 automatisch die konkreten Befehle nach:
C:\System\WinSrvLog\MSSQL\AlwaysOn_SPN_ADTeam_<Datum>.txt

Ausgaben & Logdateien
Alle Dateien werden automatisch unter C:\System\WinSrvLog\MSSQL\ gespeichert

Farbcodierung im Live-Protokoll

FarbeBedeutungBeispiel
[10:15:01] Blau (fett)Abschnittsüberschrift=== Schritt 3: Endpoint erstellen ===
[10:15:14] Grün (fett)ErfolgSQLNODE01: Endpoint 'Hadr_endpoint' angelegt
[10:15:22] GelbWarnung / übersprungenSPN MSSQLSvc/SQLNODE02:1433 fehlt
[10:15:45] Rot (fett)FehlerSQLNODE02: Verbindung fehlgeschlagen
[10:14:23] HellgrauInformationNodes: SQLNODE01, SQLNODE02

Gespeicherte Dateien

DateiInhaltZeitpunkt
AlwaysOn_ClusterSettings_<Datum>.txt Cluster-Konfiguration, AG-Parameter, Node-Status – vollständiges Backup vor Änderungen Vor Schritt 1
AlwaysOn_Setup_<Datum>.log Vollständiges Text-Log aller Schritte mit Zeitstempeln Nach Abschluss
AlwaysOn_Setup_<Datum>.rtf Farbiges RTF-Log – exportierbar über "Log speichern"-Button im Tool Manuell
AlwaysOn_SPN_ADTeam_<Datum>.txt Fertige setspn-Befehle für das AD-Team mit Erklärung und Prüfbefehl Schritt 9
Fehlerbehebung
Bekannte Fehlermeldungen und deren Ursachen
FehlermeldungUrsacheLösung
Cannot generate SSPI context SPNs für den Node fehlen im Active Directory Kurzfristig: manuellen SQL-Login-Schritt im Tool durchführen ("Weiter"-Button). Langfristig: SPNs durch AD-Team setzen lassen (Schritt 9)
WSFC group … already exists Überrest eines fehlgeschlagenen Setup-Versuchs Tool bereinigt automatisch: Remove-ClusterGroup + Registry-Key HadrAgNameToldMap auf allen Nodes
Login failed for user AGSetup_… SQL Server nicht im Mixed Mode oder Password-Policy blockiert Mixed Mode in SSMS prüfen: Server Properties → Security → SQL Server and Windows Authentication mode
Backup-Verzeichnis nicht erreichbar UNC-Pfad ungültig oder keine Schreibrechte Pfad im PropertyGrid (Backup-Share) korrigieren; muss von allen Nodes beschreibbar sein
Endpoint-Port 5022 bereits belegt Bestehender Endpoint oder Firewall blockiert den Port SELECT * FROM sys.endpoints WHERE type=4 ausführen; Endpoint-Port im PropertyGrid anpassen
AG nach 60s noch nicht sichtbar SQL Server nach HADR-Aktivierung noch nicht vollständig initialisiert Tool wartet aktiv per SELECT 1 bis max. 2 Minuten. Bei Timeout: SQL-Dienst manuell prüfen
Technische Details
Architektur-Entscheidungen und Sicherheitsmaßnahmen

Verbindungsstrategie

  • Einlesen: Windows-Auth per WMI für Dienst-Informationen
  • Konfiguration: Kerberos auf allen Nodes testen
  • Bei SSPI-Fehler: temporäres SQL-Login (28 Zeichen, kryptografisch zufällig)
  • Passwort: nur T-SQL-sichere Zeichen, nie in Logdateien
  • Login und Policy nach Abschluss garantiert entfernt

Warum sqlcmd statt dbaTools?

  • Nach HADR-Aktivierung und Dienst-Neustart in Schritt 2 hält dbaTools intern gecachte Verbindungen
  • Über diese Verbindungen erscheint sys.availability_groups noch leer
  • sqlcmd öffnet bei jedem Aufruf eine frische TCP-Verbindung
  • Betrifft: CREATE AVAILABILITY GROUP und alle AG-Join-Befehle

dbaTools-Einsatz minimiert

  • Nur Invoke-DbaQuery für T-SQL mit Credential-Support
  • Nur Connect-DbaInstance für Verbindungstests
  • Alle anderen Ops: direktes T-SQL, WMI, FailoverClusters-Cmdlets
  • Minimiert Versionsabhängigkeiten und interne Seiteneffekte

WSFC-Cleanup bei Wiederholung

  • Prüft vor AG-Anlage auf verwaiste WSFC-Gruppen
  • Stop-ClusterGroup + Remove-ClusterGroup -RemoveResources
  • Registry HKLM:\Cluster\HadrAgNameToldMap auf allen Nodes per Invoke-Command bereinigen
  • Ermöglicht saubere Wiederholung nach Fehlschlag

Module & Voraussetzungen

  • PowerShell 5.1+ (#Requires -RunAsAdministrator)
  • FailoverClusters: automatische Installation via RSAT-Feature
  • dbaTools ≥ 2.0: automatische Installation via PSGallery
  • Bereits geladene Module-Versionen werden nicht neu importiert
  • Bei Installations-Fehler: klare Fehlermeldung mit Handlungsanweisung

Cluster-Einlesen – Details

  • Get-Cluster, Get-ClusterNode, Get-ClusterGroup
  • Listener-IP aus Get-ClusterResource (Typ: IP Address)
  • Listener-Name aus Get-ClusterParameter … Name
  • HADR-Status per WMI und T-SQL-DMV
  • Alle Werte werden direkt ins PropertyGrid-Objekt übernommen

SQL Server AlwaysOn Setup Tool  ·  Version 1.0.0  ·  April 2026

DBA-Team  ·  FI-TS München  ·  Intern

PowerShell 5.1+  ·  FailoverClusters RSAT  ·  dbaTools ≥ 2.0  ·  SQL Server 2022/2025

Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Advertisement
If you accept, the ads on the page will be adapted to your preferences.
Google Ad
Save