SQL Server AlwaysOn Setup Tool – Dokumentation

DBA-Team  ·  Intern  ·  Version 1.0.0  ·  April 2026
SQL Server AlwaysOn Setup Tool
Vollautomatische Konfiguration von Always On Availability Groups auf Windows Server Failover Clustern
SQL Server 2022 / 2025 Windows Server 2022 PowerShell 5.1+ FailoverClusters RSAT dbaTools >= 2.0

Das SQL Server AlwaysOn Setup Tool ist ein PowerShell-Script mit WinForms-Oberfläche, das alle Schritte zur Einrichtung einer Always On Availability Group (AG) auf einem bestehenden Windows Server Failover Cluster (WSFC) automatisiert. Es liest Cluster- und SQL-Informationen automatisch ein, präsentiert diese im PropertyGrid zur Überprüfung, und führt nach Bestätigung alle Konfigurationsschritte durch.

⚡ Empfehlung: SPNs vor dem Setup setzen
Wenn die Service Principal Names (SPNs) für das SQL-Dienstkonto im Active Directory vor dem Setup registriert sind, läuft das Tool vollautomatisch durch – ohne manuellen Eingriff. Fehlen SPNs, pausiert das Tool und erfordert einen zusätzlichen manuellen Schritt. Details in Abschnitt 4 – SPNs.

1. Übersicht und Konfigurationsschritte

Das Tool führt die folgenden neun Schritte in dieser Reihenfolge aus. Übersprungene Schritte werden im Log ausgewiesen.

SchrittBezeichnungBeschreibung
1SQL-Service-KontoOptional: Konto und Passwort per WMI auf allen Nodes ändern und Dienst neu starten
2HADR aktivierenAlways On per sp_configure 'hadr enabled', 1 auf allen Nodes; Dienst-Neustart mit aktivem Bereitschaftstest
3Endpoint erstellenDatenbankspiegelungs-Endpoint (Port 5022) per T-SQL anlegen und starten
4CONNECT-BerechtigungWindows-Login anlegen, GRANT CONNECT ON ENDPOINT auf alle Nodes
5TestdatenbankDatenbank anlegen, Recovery-Modell FULL setzen, initiales Full-Backup erstellen
6Availability GroupAG per reinem T-SQL (sqlcmd) anlegen, Replicas beitreten, Autoseed aktivieren
7ListenerAG-Listener mit IP-Adresse und Port per ALTER AVAILABILITY GROUP
8StatusAG-Synchronisierungsstatus und Replica-Rollen per DMV ausgeben
9SPN-PrüfungFehlende MSSQLSvc-SPNs erkennen, setspn-Befehle als Textdatei für das AD-Team exportieren

2. Voraussetzungen

Infrastruktur

  • Windows Server 2022 oder neuer auf allen Cluster-Nodes
  • SQL Server 2022 oder neuer (Enterprise oder Standard Edition)
  • Bestehender Windows Server Failover Cluster (WSFC) mit 2 oder 3 Nodes
  • Gemeinsamer Backup-Share (UNC), beschreibbar von allen Nodes
  • Port 5022 zwischen allen Nodes geöffnet (HADR Endpoint)

Berechtigungen

  • Lokaler Administrator auf dem ausführenden Cluster-Node
  • SQL Server sysadmin-Rolle auf allen Nodes
  • Domänen-Leserecht (für SPN-Prüfung in Schritt 9)
  • PowerShell als Administrator (#Requires -RunAsAdministrator)

PowerShell-Module

ModulInstallationHinweis
FailoverClustersRSAT-Clustering-PowerShellWird vom Script automatisch installiert
dbaTools >= 2.0Install-Module dbatoolsWird automatisch installiert; bereits geladene Version wird nicht neu importiert
ℹ dbaTools-Nutzung bewusst minimiert
Das Tool verwendet aus dbaTools nur Invoke-DbaQuery (T-SQL-Ausführung mit Credential-Support) und Connect-DbaInstance (Verbindungstest). Alle anderen Operationen laufen über direktes T-SQL (sqlcmd), WMI (Win32_Service) oder FailoverClusters-Cmdlets – um Versionsabhängigkeiten und interne Seiteneffekte zu vermeiden.

3. Bedienung

Start

  1. PowerShell ISE oder PowerShell 5.1+ als Administrator öffnen
  2. Script SetupAlwaysOn.ps1 ausführen
  3. Das Tool prüft Module, liest Cluster-Informationen automatisch ein
  4. Erkannte Werte erscheinen im PropertyGrid (linke Seite der Oberfläche)

PropertyGrid – Konfigurationsfelder

FeldKategorieBeschreibung
AG-Name3 – AGName der Availability Group (= WSFC-Rollenname)
Listener-Name3 – AGDNS-Name des AG-Listeners
Listener-IP3 – AGIP-Adresse des Listeners (aus Cluster übernommen)
Listener-Port3 – AGTCP-Port des Listeners (Standard: 1433)
Endpoint-Port3 – AGHADR Endpoint Port (Standard: 5022)
Failover-Modus3 – AGAutomatic = synchron mit auto. Failover; Manual = asynchron
Backup-Präferenz3 – AGPrimary / Secondary / PreferSecondary / None (Standard: Primary)
Test-Datenbank3 – AGName der in die AG aufzunehmenden Datenbank
Backup-Share4 – BackupUNC-Pfad für das initiale Full-Backup
Service-Konto2 – DienstSQL-Dienstkonto (automatisch erkannt, optional änderbar)

Ablauf nach dem Start

1
Alle Felder im PropertyGrid prüfen und ggf. anpassen
2
Primary-Node in der Dropdown-Liste wählen
3
Schaltfläche Konfiguration starten klicken
4
Fortschritt im Log-Bereich (rechts) farbkodiert in Echtzeit verfolgen
5
Falls SPNs fehlen: Weiter-Button nach manuellem SQL-Login-Setup klicken (→ Abschnitt 4)
6
Am Ende: SPN-Anforderungsdatei an das AD-Team weiterleiten

4. Service Principal Names (SPNs)

Service Principal Names (SPNs) sind Einträge im Active Directory, die SQL Server ermöglichen, Kerberos-Authentifizierung zu verwenden. Fehlen die SPNs, erscheint der Fehler „Cannot generate SSPI context" und Windows-Auth schlägt fehl.

⚠ SPNs vor dem Setup setzen – dringend empfohlen
Wenn SPNs fehlen, pausiert das Tool und fordert den Anwender auf, ein temporäres SQL-Login manuell per SSMS lokal auf jedem betroffenen Node anzulegen. Dieser Schritt entfällt vollständig, wenn die SPNs bereits im Active Directory registriert sind.

Auswirkung fehlender SPNs

SituationAuswirkungAblauf
SPNs gesetzt Windows-Auth (Kerberos) auf allen Nodes Vollautomatischer Durchlauf, kein manueller Eingriff
SPNs fehlen SSPI-Fehler auf betroffenen Nodes Tool pausiert → T-SQL-Block anzeigen → manuell ausführen → Weiter → Fortsetzung per SQL-Auth

Benötigte SPNs

Je Node und für den Listener-Namen sind zwei SPNs erforderlich (Kurzname und FQDN):

# Je SQL-Node – Kurzname und FQDN 
setspn -S MSSQLSvc/SQLNODE01:1433 DOMAIN\SQLServiceAccount 
setspn -S MSSQLSvc/SQLNODE01.domain.com:1433 DOMAIN\SQLServiceAccount 
 
setspn -S MSSQLSvc/SQLNODE02:1433 DOMAIN\SQLServiceAccount 
setspn -S MSSQLSvc/SQLNODE02.domain.com:1433 DOMAIN\SQLServiceAccount 
 
# AG-Listener 
setspn -S MSSQLSvc/AG-LISTENER:1433 DOMAIN\SQLServiceAccount 
setspn -S MSSQLSvc/AG-LISTENER.domain.com:1433 DOMAIN\SQLServiceAccount 
 
# Prüfung nach dem Setzen: 
setspn -L DOMAIN\SQLServiceAccount

Das Tool generiert in Schritt 9 automatisch die konkreten setspn-Befehle und speichert sie als Textdatei:
C:\System\WinSrvLog\MSSQL\AlwaysOn_SPN_ADTeam_<Datum>.txt

Ablauf wenn SPNs fehlen

1
Tool erkennt automatisch welche Nodes nicht per Kerberos erreichbar sind
2
T-SQL-Block zur manuellen Login-Anlage wird im Log angezeigt (fertig zum Kopieren)
3
Anwender führt das T-SQL per SSMS lokal auf jedem betroffenen Node aus (per RDP)
4
Klick auf Weiter – Tool prüft SQL-Auth-Verbindung auf allen Nodes
5
Temporäres Login wird am Ende automatisch entfernt, Policy reaktiviert

5. Ausgaben und Logdateien

Farbcodierung im Live-Log

FarbeBedeutung
Blau (fett)Abschnittsüberschrift (=== ... ===)
Hellgrün (fett)Erfolg – Aktion erfolgreich abgeschlossen
GelbWarnung – Aktion übersprungen oder Hinweis
Rot (fett)Fehler – Aktion fehlgeschlagen
HellgrauInformation – allgemeine Statusmeldung

Gespeicherte Dateien

Alle Dateien werden automatisch unter C:\System\WinSrvLog\MSSQL\ gespeichert.

DateiInhaltZeitpunkt
AlwaysOn_ClusterSettings_<Datum>.txtCluster-Konfiguration, AG-Parameter, Node-Status – Backup vor ÄnderungenVor Schritt 1
AlwaysOn_Setup_<Datum>.logVollständiges Text-Log aller Schritte mit ZeitstempelnNach Abschluss
AlwaysOn_Setup_<Datum>.rtfFarbiges RTF-Log (über Schaltfläche im Tool speicherbar)Manuell
AlwaysOn_SPN_ADTeam_<Datum>.txtFertige setspn-Befehle für das AD-Team mit Erklärung und PrüfbefehlSchritt 9

6. Fehlerbehebung

FehlermeldungUrsacheLösung
Cannot generate SSPI context SPNs für den Node fehlen im Active Directory Kurzfristig: manuellen SQL-Login-Schritt im Tool durchführen. Langfristig: SPNs durch AD-Team setzen lassen
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 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; 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 (max. 2 Minuten). Bei Timeout Dienst manuell prüfen

7. Technische Details

Verbindungsstrategie

Einlesen: Windows-Auth per WMI für Dienst-Informationen; T-SQL für HADR-Status.
Konfiguration: Windows-Auth (Kerberos) auf allen Nodes testen. Bei SSPI-Fehler → temporäres SQL-Login mit kryptografisch zufälligem Passwort (28 Zeichen, RNGCryptoServiceProvider).
Cleanup: Temporäres Login nach Abschluss auf allen Nodes automatisch gelöscht, Policy reaktiviert.

AG-Anlage per sqlcmd

Für CREATE AVAILABILITY GROUP und alle AG-Join-Befehle wird sqlcmd direkt verwendet statt Invoke-DbaQuery. Grund: Nach dem Dienst-Neustart in Schritt 2 hält dbaTools intern gecachte Verbindungen, über die sys.availability_groups noch leer erscheint. sqlcmd öffnet bei jedem Aufruf eine frische TCP-Verbindung.

WSFC-Cleanup bei wiederholten Versuchen

Das Tool prüft vor der AG-Anlage ob eine verwaiste WSFC-Gruppe existiert und bereinigt automatisch:

  1. Stop-ClusterGroup + Remove-ClusterGroup -RemoveResources -Force
  2. Registry-Key HKLM:\Cluster\HadrAgNameToldMap auf allen Nodes per Invoke-Command bereinigen

Sicherheit

  • Temporäres SQL-Login: kryptografisch zufälliges Passwort, ausschließlich T-SQL-sichere Sonderzeichen
  • Passwort wird nie in Logdateien gespeichert – nur im RTF-Fenster der laufenden Sitzung sichtbar
  • Policy Enforce Password Policy wird nur für die Dauer der Login-Anlage deaktiviert
  • Login und Policy werden am Ende garantiert zurückgesetzt