SQL Server AlwaysOn & WFC-Quorum – Vor- und Nachteile im Überblick

MS SQL Server High Availability WFC / WSFC AlwaysOn FCI Lizenzmodelle PowerShell

SQL Server AlwaysOn & WFC-Quorum
Vor- und Nachteile im Überblick

Ein strukturierter Leitfaden über die drei HA-Architekturen – Availability Groups, Failover Cluster Instances und deren Kombination – mit und ohne WSFC-Quorum, Lizenzbewertung sowie konkreten PowerShell-Beispielen für SQL-Administratoren.

Grundlagen – WFC, AG und FCI

SQL Server AlwaysOn ist ein Überbegriff für zwei technisch eigenständige HA-Konzepte: die Availability Groups (AG) auf Datenbankebene und die Failover Cluster Instances (FCI) auf Instanzebene. Beide setzen auf den Windows Server Failover Cluster (WSFC) auf – einem verteilten Dienst, der Knoten, Ressourcen und das Quorum verwaltet.

WSFC vs. SQL-Ebene: Der WSFC überwacht Knoten und entscheidet über Failover auf Clusterebene. SQL Server entscheidet innerhalb einer AG über Datenbankrollen (Primary / Secondary). Beide Ebenen kommunizieren, sind aber getrennt konfigurierbar.

Availability Group (AG)

Eine AG bündelt eine Gruppe von Benutzerdatenbanken, die gemeinsam auf synchronisierte Replikate gespiegelt werden. Der Primär-Replikat nimmt Lese-/Schreibzugriffe entgegen; Sekundär-Replikate können für Lesezugriffe, Backup und Reporting genutzt werden. Bis zu 9 Sekundär-Replikate (SQL Server 2022) sind möglich, davon bis zu 3 synchron.

Failover Cluster Instance (FCI)

Eine FCI präsentiert dem Netzwerk eine einzelne virtuelle SQL Server-Instanz hinter einer virtuellen IP. Die Datenbankdateien liegen auf einem gemeinsamen Speicher (Shared Disk, CSV, SMB 3.0). Bei einem Knotenausfall übernimmt ein anderer Knoten die virtuelle IP und den freigegebenen Speicher – der SQL Server startet auf dem neuen Knoten neu. Es findet kein synchrones Daten-Streaming statt.

AG + FCI kombiniert

In Enterprise-Umgebungen werden beide Technologien kombiniert: FCIs als hochverfügbare Knoten innerhalb einer AG. So besteht Schutz sowohl vor Knotenausfällen (FCI-Ebene) als auch vor Standortausfällen (AG-Ebene).

KriteriumAvailability GroupFailover Cluster InstanceAG auf FCI-Knoten
EbeneDatenbank-GruppeSQL-InstanzInstanz + Datenbank
SpeichermodellLokal je KnotenShared Disk / CSVShared Disk pro FCI + Replikation
RTOSehr gering (Sekunden)Mittel (Neustart: 30–120 s)Sehr gering
RPO0 (synchron) / minimal (asynchron)Letzter Commit auf Shared Storage0 (synchron)
Read-Scale-OutJa (Sekundär lesbar)NeinJa
Systemdatenbanken HANeinJaJa
Automatisches FailoverJa (mit Quorum)Ja (mit Quorum)Ja
WSFC erforderlichOptional (Clusterless möglich)ImmerImmer

WSFC Quorum-Varianten

Das Quorum verhindert Split-Brain-Szenarien: Nur die Partition, die eine Mehrheit der Quorum-Stimmen hält, darf weiterhin als aktiver Cluster operieren. SQL Server selbst kennt kein eigenes Quorum-Protokoll – er verlässt sich vollständig auf den WSFC.

🖥️
Node Majority

Nur Knoten stimmen. Kein Witness-Element. Failover solange Mehrheit erreichbar.

Ungerade Knotenanzahl
💽
Node & Disk Witness

Knoten + freigegebener Cluster-Datenträger als Quorum-Disk. Klassisch für 2-Knoten.

SPOF: Quorum-Disk
📁
Node & File Share Witness

SMB-Dateifreigabe als Witness. Kein eigener Speicher nötig; geeignet für Multi-Site.

Gängigste Wahl
☁️
Cloud Witness

Azure Blob Storage als Witness (ab WS 2016). Ideal für hybride Szenarien.

Empfohlen ab WS 2016
📦
Node & Disk Witness (CSV)

Cluster Shared Volume kombiniert Datenspeicher und Quorum-Stimme – typisch bei FCI.

Nur mit Shared Storage
🚫
Ohne Quorum (FORCE)

ForceQuorum startet den Cluster erzwungen ohne Mehrheit. Ausschließlich für Notfall-DR.

Split-Brain-Risiko!
Dynamisches Quorum (WS 2012+): Ab Windows Server 2012 passt der WSFC die Quorum-Gewichtung dynamisch an. Ausgefallene Knoten verlieren ihre Stimme automatisch. Ein statischer Witness bleibt dennoch Best Practice.
Quorum-ModellKnotenanzahlWitnessAusfalltoleranzEmpfehlung
Node MajorityUngerade (3, 5, 7 …)Keiner(n−1)/2 KnotenGut für ≥ 3 Knoten
Node MajorityGerade (2, 4 …)KeinerKritisch bei GleichstandVermeiden
Node & Disk WitnessGeradeShared Diskn/2 Knoten + WitnessKlassisch, SPOF
Node & File Share WitnessBeliebigSMB Sharen/2 Knoten + WitnessEmpfohlen
Cloud WitnessBeliebigAzure Blobn/2 Knoten + WitnessEmpfohlen ab WS 2016
ForceQuorumBeliebigKeiner (manuell)Nur Notfall-DR
PowerShell — Quorum prüfen und konfigurieren FailoverClusters-Modul
# Aktuellen Quorum-Modus anzeigen 
Get-ClusterQuorum -Cluster "SQLCLUSTER01" 
 
# File Share Witness konfigurieren 
Set-ClusterQuorum -Cluster "SQLCLUSTER01" ` 
-NodeAndFileShareMajority "\\fileserver\quorum_share" 
 
# Cloud Witness setzen (ab Windows Server 2016) 
Set-ClusterQuorum -Cluster "SQLCLUSTER01" ` 
-CloudWitness ` 
-AccountName "mystorage" ` 
-AccessKey "<Base64-Key>" ` 
-Endpoint "core.windows.net" 
 
# Knotengewichtung prüfen (Dynamisches Quorum) 
Get-ClusterNode | Select-Object Name, NodeWeight, State

Availability Groups mit Quorum

Der Standardbetrieb einer AG setzt ein funktionierendes WSFC-Quorum voraus. Nur so kann ein automatisches Failover sicher ausgeführt werden: Der Cluster vergewissert sich, dass eine Mehrheit der Stimmen vorliegt, bevor das Sekundär-Replikat zur neuen Primärinstanz promoted wird.

✔ Vorteile

  • Automatisches Failover ohne manuellen Eingriff
  • Split-Brain-Schutz durch Quorum-Abstimmung
  • Health-Monitoring auf Cluster- und SQL-Ebene
  • Lesbare Sekundär-Replikate für Reporting / Backup
  • Bis zu 9 Replikate (SQL 2022), davon 3 synchron
  • Listener verteilt Leseverkehr automatisch (Read-Scale)
  • Automatisches Page Repair über Partnerreplikat
  • DTC-Transaktionen unterstützt (ab SQL 2016 SP2)

✗ Nachteile

  • Systemdatenbanken (master, msdb) nicht repliziert
  • Login-Synchronisation muss manuell / per Skript erfolgen
  • WSFC-Infrastruktur und AD-Abhängigkeit
  • Netzwerk-Overhead durch synchrone Replikation
  • Synchrones Failover erhöht Transaktionslatenz minimal
  • Asynchrones Replikat: potenzieller Datenverlust beim Failover

Synchron vs. asynchron – Replikationsmodi

ModusCommit-VerhaltenRPORTOAuto FailoverEinsatz
Synchronous-Commit Warten auf Remote-Acknowledge 0 – kein Datenverlust Sekunden Ja Primär-Site / LAN / Datacenter
Asynchronous-Commit Sofortiger Commit, kein Warten Minimal (letzter Log-Block) Minuten (manuell) Nein DR-Site / WAN / Geo-Redundanz
PowerShell (dbaTools) — AG erstellen und Replikat hinzufügen dbatools ≥ 2.x
# Neue Availability Group anlegen (synchron, Auto Failover) 
New-DbaAvailabilityGroup ` 
-Primary "SQL-NODE1" ` 
-Secondary "SQL-NODE2" ` 
-Name "AG_PROD" ` 
-Database "AppDB", "ReportDB" ` 
-SeedingMode "Automatic" ` 
-AvailabilityMode "SynchronousCommit" ` 
-FailoverMode "Automatic" ` 
-Confirm:$false 
 
# Asynchrones DR-Replikat an bestehende AG anfügen 
Add-DbaAgReplica ` 
-SqlInstance "SQL-NODE1" ` 
-Replica "SQL-DR" ` 
-AvailabilityGroup "AG_PROD" ` 
-AvailabilityMode "AsynchronousCommit" ` 
-FailoverMode "Manual" 
 
# AG-Gesundheitsstatus abrufen 
Get-DbaAgDatabase -SqlInstance "SQL-NODE1" -AvailabilityGroup "AG_PROD" | 
Select-Object Name, SynchronizationState, IsJoined, IsSuspended

Availability Groups ohne Quorum (Clusterless / Force)

Seit SQL Server 2017 können AGs auch ohne WSFC betrieben werden (Clusterless AG). Daneben gibt es den Notfallbefehl FORCE_FAILOVER_ALLOW_DATA_LOSS für Situationen, in denen der Cluster kein Quorum mehr hat und der Primär dauerhaft nicht erreichbar ist.

Clusterless AG (ab SQL Server 2017)

✔ Vorteile

  • Kein WSFC / Active Directory erforderlich
  • Plattformübergreifend: Windows + Linux in einer AG
  • Read-Scale ohne Failover-Automatismus
  • Einfacheres Setup für reine Replikations-Szenarien
  • Geringere Infrastrukturkosten

✗ Nachteile

  • Kein automatisches Failover möglich
  • Kein AG-Listener ohne WSFC (keine virtuelle IP)
  • Manuelles Failover mit potenziellem Datenverlust
  • Kein Health-Monitoring durch Windows-Cluster
  • Nur für Read-Scale- oder DR-Szenarien geeignet

Force-Failover (FORCE_FAILOVER_ALLOW_DATA_LOSS)

Achtung – Datenverlust möglich: Ein erzwungenes Failover darf nur dann eingesetzt werden, wenn der Primär-Knoten dauerhaft nicht erreichbar ist und kein synchrones Replikat verfügbar ist. Vor dem Force-Failover immer sicherstellen, dass der alte Primär nicht mehr schreibt (Fencing / Isolation).
SzenarioBetriebsmodusAuto FailoverListenerDatenverlustrisikoEinsatz
Standard AG + WSFCMit Quorum Ja Ja Keiner (synchron)Produktion
Clusterless AGOhne WSFC Nein Nein Minimal (async)Read-Scale, Linux, Cross-Plattform
ForceQuorum + Force FailoverQuorum erzwungen Nein Manuell Hoch (async Replikat)Nur Disaster Recovery
T-SQL / PowerShell — Force Failover und Clusterless AG Nur für DR-Szenarien
-- !! Nur im Notfall !! 
-- Schritt 1: WSFC Quorum auf dem verbleibenden Knoten erzwingen 
Start-ClusterNode -FixQuorum 
 
-- Schritt 2: Force Failover auf dem Sekundär-Replikat ausführen 
ALTER AVAILABILITY GROUP [AG_PROD] 
FORCE_FAILOVER_ALLOW_DATA_LOSS; 
 
-- Schritt 3: Nach Wiederherstellung – alten Primär als Sekundär joinen 
ALTER DATABASE [AppDB] SET HADR RESUME; 
ALTER AVAILABILITY GROUP [AG_PROD] SET (ROLE = SECONDARY); 
 
-- Clusterless AG erstellen (SQL Server 2017+, CLUSTER_TYPE = NONE) 
CREATE AVAILABILITY GROUP [AG_READSCALE] 
WITH (CLUSTER_TYPE = NONE) 
FOR DATABASE [AppDB] 
REPLICA ON 
N'SQL-NODE1' WITH (ENDPOINT_URL = N'TCP://node1:5022', 
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL), 
N'SQL-NODE2' WITH (ENDPOINT_URL = N'TCP://node2:5022', 
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL);

Failover Cluster Instance (FCI)

Die FCI bietet HA auf Instanzebene. Da alle Knoten denselben freigegebenen Speicher nutzen, entfällt die Datenreplikation – der Failover ist ein Neustart der SQL-Instanz auf einem anderen Knoten unter Übernahme der gemeinsamen Ressourcen (virtuelle IP, Name, Speicher).

FCI benötigt immer ein Quorum: Ein FCI-Cluster ohne stabiles Quorum kann keine automatischen Failovers durchführen. Im Gegensatz zur AG gibt es für FCI kein Clusterless-Äquivalent.

✔ Vorteile FCI

  • Alle Systemdatenbanken (master, msdb) sind HA-fähig
  • Logins, Jobs, Linked Server liegen auf dem Shared Storage
  • Transparenz für Applikationen (virtuelle IP / Name)
  • Kein datenbankspezifisches Setup nötig
  • Einfaches Lizenzierungsmodell (Aktiv/Passiv mit SA)
  • Passiv-Knoten ohne SQL Server-Lizenz (SA-berechtigt)

✗ Nachteile FCI

  • Shared Storage = potenzieller Single Point of Failure
  • RTO höher als AG (Instanz-Neustart: 30–120 s)
  • Passiv-Knoten im Aktiv/Passiv-Modus ohne Nutzung
  • Shared Disk erfordert SAN / iSCSI / SMB 3.0
  • Kein Read-Scale-Out (kein Sekundär-Lesezugriff)
  • Kein georedundantes Failover ohne AG-Kombination

Aktiv/Aktiv vs. Aktiv/Passiv FCI

ModellInstanzenRessourcennutzungLizenz Passiv-KnotenFailover-Ziel
Aktiv / Passiv (1:1)1 aktive Instanz50 % (Passiv wartet)Lizenzfrei mit SAPassiv-Knoten übernimmt
Aktiv / Aktiv (N+M)Mehrere InstanzenHoch (alle Knoten aktiv)Jeder Knoten benötigt LizenzGegenseitig / dediziert
Aktiv / Passiv (N+1)N aktive, 1 passivEffizient1 Lizenz für Passiv (SA)1 Passiv für alle Aktiven
PowerShell (dbaTools + FailoverClusters) — FCI-Status prüfen SMO + Cluster-Modul
# SQL Server Cluster-Ressourcen anzeigen 
Get-ClusterResource | Where-Object { $_.ResourceType -eq "SQL Server" } | 
Select-Object Name, State, OwnerNode 
 
# Aktuellen Eigentümerknoten ermitteln 
Get-ClusterGroup -Cluster "SQLCLUSTER01" | 
Where-Object { $_.Name -like "SQL*" } | 
Select-Object Name, OwnerNode, State 
 
# Geplanten Knotenwechsel durchführen 
Move-ClusterGroup -Name "SQL Server (MSSQLSERVER)" ` 
-Node "SQL-NODE2" 
 
# Cluster-Informationen per SMO / dbaTools abrufen 
$srv = Connect-DbaInstance -SqlInstance "SQLCLUSTER01" 
$srv.IsClustered 
$srv.ClusterName 
$srv.ClusterQuorumState

Lizenzmodelle – Aktiv/Passiv & Software Assurance

Die Wahl des HA-Modells hat direkte Auswirkungen auf die SQL Server-Lizenzkosten. Microsoft gewährt unter bestimmten Bedingungen Lizenzerleichterungen für Hochverfügbarkeits-Replikate.

Grundregel: Ein SQL Server-Replikat, das ausschließlich als passives Failover-Ziel dient (keine aktiven Abfragen, kein Reporting), kann unter Software Assurance lizenzfrei betrieben werden – sowohl bei FCI als auch bei AG.
SzenarioTechnologieSA erforderlichPassiv lizenzfreiAnzahlBedingung
FCI Aktiv/Passiv (1:1)FCIJaJa1Passiv-Knoten: keine aktiven Abfragen
FCI Aktiv/AktivFCINein0Alle Knoten benötigen Lizenz
AG – 1 synchrones Replikat passivAGJaJa1Sekundär nicht für Reads genutzt
AG – Lesbare SekundäreAGNein0Read-Zugriff = aktive Nutzung = Lizenz
AG – DR-Replikat (asynchron, passiv)AGJaJa1Kein aktiver Zugriff auf das DR-Replikat
Enterprise – unbegrenzt passive ReplikateAG / FCIJa (Ent.)JaUnbegrenztEnterprise Edition + SA; kein aktiver Zugriff
Backup auf Sekundär: Die Nutzung des Sekundär-Replikats für Backups gilt technisch als aktive Nutzung. Microsoft toleriert dies für passive Replikate gemäß SA-Bedingungen – prüfen Sie jedoch immer den aktuellen Microsoft SQL Server Licensing Guide, da sich Vertragsbedingungen ändern können.

Entscheidungsmatrix – Welche Architektur wann?

AnforderungAG + QuorumAG ohne QuorumFCIAG auf FCI
RPO = 0 (kein Datenverlust)✔ Synchron⚠ Shared Storage
Automatisches Failover
Systemdatenbanken HA
Read-Scale-Out
Georedundanz / Multi-Site✔ Asynchron✔ manuell
Kein Shared Storage erforderlich
Linux / Cross-Plattform⚠ Pacemaker✔ CLUSTER_TYPE=NONE⚠ Pacemaker
Passiv-Knoten lizenzfrei (SA)✔ 1 passiv✔ Aktiv/Passiv
RTO < 30 Sekunden⚠ 30–120 s
Geringe Infrastrukturkosten✗ SAN/iSCSI✗ höchste Kosten
PowerShell (dbaTools) — AG-Monitoring und Replikat-Latenz dbatools ≥ 2.x
# Alle AGs mit Replikat-Details 
Get-DbaAvailabilityGroup -SqlInstance "SQL-NODE1" | 
Select-Object Name, PrimaryReplica, AutomatedBackupPreference, 
HealthCheckInterval, FailureConditionLevel 
 
# Synchronisierungszustand aller AG-Datenbanken 
Get-DbaAgDatabase -SqlInstance "SQL-NODE1" | 
Format-Table AvailabilityGroup, Name, SynchronizationState, 
SynchronizationHealth, EstimatedDataLoss, 
EstimatedRecoveryTime -AutoSize 
 
# Replikat-Latenz und Log-Send-Queue (relevant für async DR) 
Get-DbaAgReplica -SqlInstance "SQL-NODE1" -AvailabilityGroup "AG_PROD" | 
Select-Object Name, Role, AvailabilityMode, FailoverMode, 
LogSendQueueSize, RedoQueueSize, LastSentTime, LastRedoneTime
Empfehlung für neue Deployments: Availability Group mit File Share Witness oder Cloud Witness + synchrones Replikat im primären Datacenter + asynchrones DR-Replikat. Damit erreichen Sie RPO = 0 für den lokalen Failover bei gleichzeitiger Georedundanz – und nutzen das SA-Passiv-Recht optimal aus.
← Vorheriger Beitrag Standardisierte SQL-Server Installationen Nächster Beitrag → Batch-Löschung großer Datenmengen in MS SQL Server