Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server unter Windows
In diesem Thema wird beschrieben, wie die flexible Failoverrichtlinie für eine Always On-Verfügbarkeitsgruppe mithilfe von Transact-SQL oder PowerShell in SQL Server konfiguriert wird. Eine flexible Failoverrichtlinie ermöglicht eine präzise Kontrolle über die Bedingungen, die ein automatisches Failover für eine Verfügbarkeitsgruppe verursachen. Durch eine Änderung der Fehlerbedingungen, die ein automatisches Failover und die Häufigkeit von Integritätsprüfungen auslösen, können Sie die Wahrscheinlichkeit für ein automatisches Failover erhöhen oder verringern, um das SLA für Hochverfügbarkeit zu unterstützen.
Die flexible Failover-Richtlinie für eine Verfügbarkeitsgruppe wird über die Stufe der Fehlerbedingungen und den Schwellenwert für die Zeitüberschreitung der Integritätsprüfung definiert. Sobald erkannt wird, dass eine Verfügbarkeitsgruppe ihre Fehlerbedingungsebene oder ihren Schwellenwert für das Integritätsprüfungstimeout überschritten hat, meldet die Ressourcen-DLL der Verfügbarkeitsgruppe dies dem WSFC-Cluster (Windows Server Failover Clustering). Der WSFC-Cluster initiiert dann ein automatisches Failover zum sekundären Replikat.
Hinweis
Die flexible Failoverrichtlinie für eine Verfügbarkeitsgruppe kann nicht mit SQL Server Management Studiokonfiguriert werden.
Einschränkungen beim automatischen Failover
Damit ein automatisches Failover ausgeführt werden kann, müssen das aktuelle primäre Replikat und ein sekundäres Replikat für den Verfügbarkeitsmodus für synchrone Commits und automatischem Failover konfiguriert und das sekundäre Replikat mit dem primären Replikat synchronisiert sein.
In SQL Server 2019 (15.x) wird die maximale Anzahl der synchronen Replikate von ehemals 3 in SQL Server 2017 (14.x) auf 5 erhöht. Sie können diese Gruppe aus fünf Replikaten für das automatische Failover in der Gruppe konfigurieren. Es gibt ein primäres Replikat sowie vier synchrone sekundäre Replikate.
Wenn eine Verfügbarkeitsgruppe den Schwellenwert für WSFC-Fehler überschreitet, versucht der WSFC-Cluster nicht, ein automatisches Failover für die Verfügbarkeitsgruppe auszuführen. Außerdem verbleibt die WSFC-Ressourcengruppe der Verfügbarkeitsgruppe so lange in einem fehlerhaften Zustand, bis der Clusteradministrator die fehlerhafte Gruppe manuell online schaltet oder bis der Datenbankadministrator ein manuelles Failover der Verfügbarkeitsgruppe ausführt. Der WSFC-Fehlerschwellenwert ist als maximale Anzahl von Fehlern definiert, die während eines bestimmten Zeitraums für die Verfügbarkeitsgruppe unterstützt werden. Der Standardzeitraum beträgt sechs Stunden, und der Standardwert für die maximale Anzahl von Fehlern während dieses Zeitraums entspricht n-1, wobei n für die Anzahl der WSFC-Knoten steht. Um den Fehlerschwellenwert für eine angegebene Verfügbarkeitsgruppe zu ändern, verwenden Sie die WSFC Failover Manager Console.
Voraussetzungen
- Sie müssen mit der Serverinstanz verbunden sein, die das primäre Replikat hostet.
Berechtigungen
| Aufgabe | Berechtigungen |
|---|---|
| Konfigurieren der flexiblen Failoverrichtlinie für eine neue Verfügbarkeitsgruppe | Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin sowie entweder die CREATE AVAILABILITY GROUP-Serverberechtigung, die ALTER ANY AVAILABILITY GROUP-Berechtigung oder die CONTROL SERVER-Berechtigung. |
| So ändern Sie die Richtlinie einer bestehenden Verfügbarkeitsgruppe | Erfordert die Berechtigung ALTER AVAILABILITY GROUP für die Verfügbarkeitsgruppe, die CONTROL-Berechtigung AVAILABILITY GROUP, die ALTER ANY-Berechtigung AVAILABILITY GROUP oder die CONTROL SERVER-Berechtigung. |
Schwellenwert für das Integritätsprüfungstimeout
Die WSFC-Ressourcen-DLL der Verfügbarkeitsgruppe führt eine Integritätsprüfung am primären Replikat aus, indem sie die gespeicherte Prozedur sp_server_diagnostics auf der SQL Server-Instanz aufruft, die das primäre Replikat hostet. sp_server_diagnostics gibt Ergebnisse in einem Intervall zurück, das 1/3 des Schwellenwerts für das Integritätsprüfungstimeout für die Verfügbarkeitsgruppe entspricht. Der Standardschwellenwert für das Integritätsprüfungstimeout ist 30 Sekunden, und dies bedeutet, dass sp_server_diagnostics in einem Intervall von 10 Sekunden Ergebnisse zurückgibt. Wenn sp_server_diagnostics langsam ist oder keine Informationen zurückgibt, wartet die Ressourcen-DLL das gesamte Intervall des durch den Schwellenwert definierten Integritätsprüfungstimeouts ab, bevor festgestellt wird, dass das primäre Replikat nicht reagiert. Wenn das primäre Replikat nicht reagiert, wird ein automatisches Failover initiiert, sofern dies aktuell unterstützt wird.
Wichtig
sp_server_diagnostics führt keine Integritätsprüfungen auf Datenbankebene aus.
Fehlerbedingungsebene
Ob die Diagnosedaten und Zustandsinformationen, die von sp_server_diagnostics zurückgegeben wurden, ein automatisches Failover garantieren, hängt von der Fehlerbedingungsebene der Verfügbarkeitsgruppe ab. Die Fehlerbedingungsebene gibt an, welche Fehlerbedingungen ein automatisches Failover auslösen. Es gibt fünf Fehlerbedingungsebenen, die von der Ebene mit den wenigsten Einschränkungen (Ebene 1) bis zur Ebene mit den meisten Einschränkungen (Ebene 5) reichen. Eine bestimmte Ebene umfasst auch die weniger restriktiven Ebenen. Daher umfasst die strengste Stufe, fünf, die vier weniger restriktiven Bedingungen und so weiter.
Wichtig
Beschädigte und fehlerverdächtige Datenbanken werden von keiner Fehlerbedingungsebene erkannt. Deshalb werden automatische Failover niemals von Datenbanken ausgelöst, die beschädigt oder fehlerverdächtig sind (entweder aufgrund von Hardwarefehlern, Datenkorruption oder anderen Fehlern).
In der folgenden Tabelle wird die Fehlerbedingung beschrieben, die der jeweiligen Ebene entspricht.
| Ebene | Fehlerbedingung | Transact-SQL-Wert | PowerShell-Wert |
|---|---|---|---|
| Eins | Bei Serverausfall. Gibt an, dass ein automatisches Failover in den folgenden Fällen initiiert wird: Der SQL Server -Dienst ist ausgefallen. Das Leasing der Verfügbarkeitsgruppe für die Verbindung mit dem WSFC-Cluster läuft ab, da keine ACK-Meldung von der Serverinstanz empfangen wird. Weitere Informationen finden Sie unter How It Works: SQL Server Always On Lease Timeout. Dies ist die am wenigsten restriktive Ebene. |
1 | OnServerDown |
| Zwei | Der Server reagiert nicht. Gibt an, dass ein automatisches Failover in den folgenden Fällen initiiert wird: Die Instanz von SQL Server stellt keine Verbindung mit dem Cluster her, und der vom Benutzer angegebene Schwellenwert für das Integritätsprüfungstimeout der Verfügbarkeitsgruppe wurde überschritten. Das Verfügbarkeitsreplikat weist einen fehlerhaften Status auf. |
2 | OnServerUnresponsive |
| drei | Bei einem kritischen Serverfehler. Gibt an, dass bei kritischen internen SQL Server-Fehlern, etwa verwaisten Spinlocks, schwerwiegenden Schreibzugriffsverletzungen oder zu vielen in kurzer Zeit erzeugten Speicherabbildern, ein automatisches Failover ausgelöst wird. Dies ist die Standardebene. |
3 | OnCriticalServerError |
| 4 (vier) | Bei einem mittelschweren Serverfehler. Gibt an, dass ein automatisches Failover bei mittelschweren internen SQL Server -Fehlern initiiert wird, z. B. bei dauerhaft unzureichendem Arbeitsspeicher im internen SQL Server -Ressourcenpool. | 4 | OnModerateServerError |
| 5 (fünf) | Bei allen qualifizierten Fehlerbedingungen. Gibt an, dass ein automatisches Failover bei sämtlichen qualifizierten Fehlerbedingungen initiiert wird, einschließlich: Erkennung eines Scheduler-Deadlocks Erkennung eines unlösbaren Deadlocks. Dies ist die restriktivste Ebene. |
5 | BeiAllenQualifiziertenFehlerbedingungen |
Hinweis
Das Fehlen einer Reaktion auf Clientanforderungen durch eine SQL Server -Instanz ist für Verfügbarkeitsgruppen nicht relevant.
Verwenden von Transact-SQL
So konfigurieren Sie die flexible Failoverrichtlinie
Stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet.
Verwenden Sie für eine neue Verfügbarkeitsgruppe die CREATE AVAILABILITY GROUPTransact-SQL-Anweisung. Wenn Sie eine vorhandene Verfügbarkeitsgruppe ändern, verwenden Sie die ALTER AVAILABILITY GROUPTransact-SQL-Anweisung.
Um die Failover-Bedingungsebene festzulegen, verwenden Sie die Option FAILURE_CONDITION_LEVEL = n , wobei n für eine ganze Zahl zwischen 1 und 5 steht.
Beispielsweise wird mit der folgenden Transact-SQL-Anweisung die Fehlerbedingungsebene der vorhandenen Verfügbarkeitsgruppe
AG1in Ebene 1 geändert:ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);Diese ganzzahligen Werte stehen in folgender Beziehung zu den Fehlerbedingungsebenen:
Transact-SQL-Wert Ebene Automatisches Failover wird initiiert, wenn... 1 Eins Bei Serverausfall. Der SQL Server-Dienst wird aufgrund eines Failovers oder Neustarts beendet. 2 Zwei Der Server reagiert nicht. Eine Bedingung mit einem niedrigeren Wert ist erfüllt, der SQL Server-Dienst ist mit dem Cluster verbunden und der Timeoutschwellenwert der Integritätsprüfung wird überschritten, oder das aktuelle primäre Replikat befindet sich in einem Fehlerzustand. 3 drei Bei einem kritischen Serverfehler. Eine Bedingung mit einem niedrigeren Wert ist erfüllt, oder es tritt ein interner kritischer Serverfehler auf.
Dies ist die Standardebene.4 4 (vier) Bei einem mittelschweren Serverfehler. Eine Bedingung mit einem niedrigeren Wert ist erfüllt, oder es tritt ein moderater Serverfehler auf. 5 5 (fünf) Bei allen qualifizierten Fehlerbedingungen. Jede Bedingung mit einem niedrigeren Wert ist erfüllt, oder es tritt eine maßgebliche Fehlerbedingung auf. Weitere Informationen zu den Failover-Bedingungsebenen finden Sie unter Flexible Failoverrichtlinie für automatisches Failover einer Verfügbarkeitsgruppe (SQL Server).
Um den Schwellenwert für das Timeout der Integritätsprüfung zu konfigurieren, verwenden Sie die Option HEALTH_CHECK_TIMEOUT = n , wobei n für eine ganze Zahl zwischen 15000 Millisekunden (15 Sekunden) und 4294967295 Millisekunden steht. Der Standardwert ist 30.000 Millisekunden (oder 30 Sekunden).
Mit der folgenden Transact-SQL-Anweisung wird z. B. der Schwellenwert für das Timeout der Integritätsprüfung einer vorhandenen Verfügbarkeitsgruppe mit dem Namen
AG1in 60.000 Millisekunden (eine Minute) geändert.ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);
Verwenden von PowerShell
So konfigurieren Sie die flexible Failoverrichtlinie
Legen Sie mit (cd) die Serverinstanz als Standard fest, die das primäre Replikat hostet.
Verwenden Sie beim Hinzufügen eines Verfügbarkeitsreplikats zu einer Verfügbarkeitsgruppe das Cmdlet New-SqlAvailabilityGroup . Verwenden Sie beim Ändern eines vorhandenen Verfügbarkeitsreplikats das Cmdlet Set-SqlAvailabilityGroup.
Um die Failover-Bedingungsebene festzulegen, verwenden Sie den FailureConditionLevellevel-Parameter, wobei level für einen der folgenden Werte steht:
Wert Ebene Automatisches Failover wird initiiert, wenn... OnServerDown Eins Bei Serverausfall. Der SQL Server-Dienst wird aufgrund eines Failovers oder Neustarts beendet. OnServerUnresponsive Zwei Der Server reagiert nicht. Jede Bedingung mit einem niedrigeren Wert ist erfüllt, der SQL Server-Dienst ist mit dem Cluster verbunden und der Schwellenwert für das Timeout der Integritätsprüfung wird überschritten, oder das aktuelle primäre Replikat befindet sich in einem Fehlerzustand. OnCriticalServerError drei Bei einem kritischen Serverfehler. Jede Bedingung mit einem niedrigeren Wert ist erfüllt, oder es tritt ein kritischer interner Serverfehler auf.
Dies ist die Standardebene.OnModerateServerError 4 (vier) Bei einem mittelschweren Serverfehler. Eine Bedingung mit niedrigerem Wert ist erfüllt, oder es tritt ein mäßiger Serverfehler auf. BeiAllenQualifiziertenFehlerbedingungen 5 (fünf) Bei allen qualifizierten Fehlerbedingungen. Jede Bedingung mit einem niedrigeren Wert ist erfüllt, oder es tritt eine maßgebliche Fehlerbedingung auf. Weitere Informationen zu den Failover-Bedingungsebenen finden Sie unter Flexible Failoverrichtlinie für automatisches Failover einer Verfügbarkeitsgruppe (SQL Server).
Beispielsweise wird mit dem folgenden Befehl die Fehlerbedingungsebene der vorhandenen Verfügbarkeitsgruppe
AG1in Ebene 1 geändert.Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg ` -FailureConditionLevel OnServerDownUm den Schwellenwert für das Timeout der Integritätsprüfung festzulegen, verwenden Sie den HealthCheckTimeoutn -Parameter, wobei n für eine ganze Zahl zwischen 15000 Millisekunden (15 Sekunden) und 4294967295 Millisekunden steht. Der Standardwert ist 30000 Millisekunden (oder 30 Sekunden).
Beispielsweise ändert der folgende Befehl den Timeoutschwellenwert der Integritätsprüfung einer vorhandenen Verfügbarkeitsgruppe,
AG1, auf 120.000 Millisekunden (zwei Minuten).Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG ` -HealthCheckTimeout 120000
Hinweis
Um die Syntax eines Cmdlets anzuzeigen, verwenden Sie das Get-Help -Cmdlet in der SQL Server PowerShell-Umgebung. Weitere Informationen finden Sie unter Get Help SQL Server PowerShell.
Einrichten und Verwenden des SQL Server PowerShell-Anbieters
Verwandte Aufgaben
So konfigurieren Sie das automatische Failover
Ändern des Verfügbarkeitsmodus eines Verfügbarkeitsreplikats (SQL Server) (automatisches Failover erfordert den Verfügbarkeitsmodus für synchrone Commits)
Ändern des Failovermodus eines Verfügbarkeitsreplikats (SQL Server)
Verwandte Inhalte
Siehe auch
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)
Verfügbarkeitsmodi (Always On-Verfügbarkeitsgruppen)
Failover und Failover-Modi (Always On-Verfügbarkeitsgruppen)
Windows Server-Failovercluster (WSFC) mit SQL Server
Failover-Strategie für Failoverclusterinstanzen
sp_server_diagnostics (Transact-SQL)