Ausführen eines geplanten manuellen Failovers einer Always On-Verfügbarkeitsgruppe (SQL Server)Perform a planned manual failover of an Always On availability group (SQL Server)

GILT FÜR: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

In diesem Thema wird beschrieben, wie ein manuelles Failover ohne Datenverlust (ein geplantes manuelles Failover) in einer AlwaysOn-Verfügbarkeitsgruppe mit SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLoder PowerShell in SQL Server 2019 (15.x)SQL Server 2019 (15.x)ausgeführt wird.This topic describes how to perform a manual failover without data loss (a planned manual failover) on an AlwaysOn availability group by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell in SQL Server 2019 (15.x)SQL Server 2019 (15.x). Eine Verfügbarkeitsgruppe führt auf der Ebene eines Verfügbarkeitsreplikats ein Failover aus.An availability group fails over at the level of an availability replica. Bei einem geplanten manuellen Failover wird – wie bei jedem Failover in einer AlwaysOn-Verfügbarkeitsgruppe – ein sekundäres Replikat in die primäre Rolle überführt.A planned manual failover, like any AlwaysOn availability group failover, transitions a secondary replica to primary role. Parallel dazu wird das bisherige primäre Replikat in die sekundäre Rolle überführt.Concurrently, the failover transitions the former primary replica to the secondary role.

Ein geplantes manuelles Failover wird nur unterstützt, wenn das primäre Replikat und das sekundäre Zielreplikat im Modus für synchrone Commits ausgeführt werden und aktuell synchronisiert sind.A planned manual failover is supported only when the primary replica and the target secondary replica are running in synchronous-commit mode and are currently synchronized. Bei einem geplanten manuellen Failover bleiben sämtliche Daten in den sekundären Datenbanken, die im sekundären Zielreplikat mit der Verfügbarkeitsgruppe verknüpft sind, erhalten.A planned manual failover preserves all the data in the secondary databases that are joined to the availability group on the target secondary replica. Nachdem das frühere primäre Replikat in die sekundäre Rolle übergegangen ist, werden seine Datenbanken zu sekundären Datenbanken.After the former primary replica transitions to the secondary role, its databases become secondary databases. Anschließend beginnt Ihre Synchronisierung mit den neuen primären Datenbanken.Then they begin to synchronize with the new primary databases. Nach dem Übergang in den Status SYNCHRONIZED kann das neue sekundäre Replikat als Ziel eines künftigen geplanten manuellen Failovers dienen.After they all transition into the SYNCHRONIZED state, the new secondary replica becomes eligible to serve as the target of a future planned manual failover.

Hinweis

Wenn das sekundäre und primäre Replikat für den automatischen Failovermodus konfiguriert sind, kann das sekundäre Replikat nach der Synchronisierung auch als Ziel für ein automatisches Failover dienen.If the secondary and primary replicas are both configured for automatic failover mode, after the secondary replica is synchronized, it also can serve as the target for an automatic failover. Weitere Informationen finden Sie unter Verfügbarkeitsmodi (AlwaysOn-Verfügbarkeitsgruppen).For more information, see Availability modes (AlwaysOn availability groups).

VoraussetzungenBefore you begin

Wichtig

Für das Failover einer schreibgeschützten Verfügbarkeitsgruppe ohne Cluster-Manager gibt es bestimmte Vorgehensweisen.There are specific procedures to fail over a read-scale availability group with no cluster manager. Wenn für eine Verfügbarkeitsgruppe CLUSTER_TYPE = NONE gilt, führen Sie die Schritte unter Ausführen eines Failovers des primären Replikats auf schreibgeschützten Verfügbarkeitsgruppen aus.When an availability group has CLUSTER_TYPE = NONE, follow the procedures under Fail over the primary replica on a read-scale availability group.

EinschränkungenLimitations and restrictions

Voraussetzungen und EinschränkungenPrerequisites and restrictions

  • Sowohl das sekundäre Zielreplikat als auch das primäre Replikat müssen im Verfügbarkeitsmodus für synchrone Commits ausgeführt werden.Both the target secondary replica and the primary replica must be running in synchronous-commit availability mode.

  • Das sekundäre Zielreplikat muss aktuell mit dem primären Replikat synchronisiert sein.Currently, the target secondary replica must be synchronized with the primary replica. Alle sekundären Datenbanken in diesem sekundären Replikat müssen mit der Verfügbarkeitsgruppe verknüpft sein.All the secondary databases on this secondary replica must be joined to the availability group. Ebenso müssen sie mit ihren entsprechenden primären Datenbanken synchronisiert sein (d.h., die lokalen sekundären Datenbanken müssen SYNCHRONIZED sein).They also must be synchronized with their corresponding primary databases (that is, the local secondary databases must be SYNCHRONIZED).

    Tipp

    Sie können die Failoverbereitschaft eines sekundären Replikats ermitteln, indem Sie die Spalte is_failover_ready in der dynamischen Verwaltungssicht sys.dm_hadr_database_replica_cluster_states abfragen.To determine the failover readiness of a secondary replica, query the is_failover_ready column in the sys.dm_hadr_database_replica_cluster_states dynamic management view. Alternativ können Sie sich die Spalte Failoverbereitschaft des AlwaysOn-Gruppendashboards ansehen.Or you can look at the Failover Readiness column of the AlwaysOn group dashboard.

  • Dieser Task wird nur für das sekundäre Zielreplikat unterstützt.This task is supported only on the target secondary replica. Sie müssen mit der Serverinstanz verbunden sein, auf der das sekundäre Zielreplikat gehostet wird.You must be connected to the server instance that hosts the target secondary replica.

SicherheitSecurity

BerechtigungenPermissions

Für die Verfügbarkeitsgruppe ist die Berechtigung ALTER AVAILABILITY GROUP erforderlich.The ALTER AVAILABILITY GROUP permission is required on the availability group. Die CONTROL AVAILABILITY GROUP-Berechtigung, die ALTER ANY AVAILABILITY GROUP-Berechtigung oder die CONTROL SERVER-Berechtigung sind ebenfalls erforderlich.The CONTROL AVAILABILITY GROUP permission, the ALTER ANY AVAILABILITY GROUP permission, or the CONTROL SERVER permission also is required.

Verwenden von SQL Server Management StudioUse SQL Server Management Studio

So führen Sie manuell ein Failover für eine Verfügbarkeitsgruppe aus:To manually fail over an availability group:

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Serverinstanz her, die ein sekundäres Replikat der Verfügbarkeitsgruppe hostet, für die ein Failover ausgeführt werden muss.In Object Explorer, connect to a server instance that hosts a secondary replica of the availability group that needs to be failed over. Erweitern Sie die Serverstruktur.Expand the server tree.

  2. Erweitern Sie den Knoten Hohe Verfügbarkeit (immer aktiviert) und den Knoten Verfügbarkeitsgruppen .Expand the AlwaysOn High Availability node and the Availability Groups node.

  3. Klicken Sie mit der rechten Maustaste auf die Verfügbarkeitsgruppe, für die ein Failover ausgeführt werden soll, und wählen Sie Failover aus.Right-click the availability group to be failed over, and select Failover.

  4. Der Assistent für das Failover von Verfügbarkeitsgruppen wird gestartet.The Failover Availability Group wizard starts. Weitere Informationen finden Sie unter Verwenden des Assistenten für Failover-Verfügbarkeitsgruppen (SQL Server Management Studio).For more information, see Use the Failover Availability Group wizard (SQL Server Management Studio).

Verwendung von Transact-SQLUse Transact-SQL

So führen Sie manuell ein Failover für eine Verfügbarkeitsgruppe aus:To manually fail over an availability group:

  1. Stellen Sie eine Verbindung mit der Serverinstanz her, die das sekundäre Zielreplikat hostet.Connect to the server instance that hosts the target secondary replica.

  2. Verwenden Sie die ALTER AVAILABILITY GROUP -Anweisung wie folgt:Use the ALTER AVAILABILITY GROUP statement, as follows:

    ALTER AVAILABILITY GROUP Gruppenname FAILOVERALTER AVAILABILITY GROUP group_name FAILOVER

    In der Anweisung ist Gruppenname der Name der Verfügbarkeitsgruppe.In the statement, group_name is the name of the availability group.

    Im folgenden Beispiel wird manuell ein Failover der MyAg-Verfügbarkeitsgruppe zum verbundenen sekundären Replikat ausgeführt:The following example manually fails over the MyAg availability group to the connected secondary replica:

    ALTER AVAILABILITY GROUP MyAg FAILOVER;  
    

Verwendung von PowerShellUse PowerShell

So führen Sie manuell ein Failover für eine Verfügbarkeitsgruppe aus:To manually fail over an availability group:

  1. Wechseln Sie (mit cd) in das Verzeichnis der Serverinstanz, die das sekundäre Zielreplikat hostet.Change the directory (cd) to the server instance that hosts the target secondary replica.

  2. Verwenden Sie das Cmdlet Switch-SqlAvailabilityGroup .Use the Switch-SqlAvailabilityGroup cmdlet.

    Hinweis

    Um die Syntax eines Cmdlets anzuzeigen, verwenden Sie das Get-Help -Cmdlet in der SQL Server 2019 (15.x)SQL Server 2019 (15.x) PowerShell-Umgebung.To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL Server 2019 (15.x)SQL Server 2019 (15.x) PowerShell environment. Weitere Informationen finden Sie unter Get Help for SQL Server PowerShell (Hilfe zu SQL Server-PowerShell anfordern).For more information, see Get help for SQL Server PowerShell.

    Im folgenden Beispiel wird manuell ein Failover der MyAg-Verfügbarkeitsgruppe zum sekundären Replikat mit dem angegebenen Pfad ausgeführt:The following example manually fails over the MyAg availability group to the secondary replica with the specified path:

    Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg  
    

    So richten Sie den SQL Server PowerShell-Anbieter ein und verwenden ihn:To set up and use the SQL Server PowerShell provider:

Nachverfolgung: Nach dem manuellen Ausführen eines Failovers für eine VerfügbarkeitsgruppeFollow up: After you manually fail over an availability group

Wenn Sie ein Failover außerhalb des Satz automatischer Failoverautomatic failover set der Verfügbarkeitsgruppe ausgeführt haben, passen Sie die Quorumabstimmungen der WSFC-Knoten (Windows Server-Failoverclustering) an die Konfiguration der neuen Verfügbarkeitsgruppe an.If you failed over outside the Satz automatischer Failoverautomatic failover set of the availability group, adjust the quorum votes of the Windows Server failover clustering nodes to reflect your new availability group configuration. Weitere Informationen finden Sie unter Windows Server-Failoverclustering (WSFC) mit SQL Server.For more information, see Windows Server failover clustering (WSFC) with SQL Server.

Ausführen eines Failovers des primären Replikats auf eine schreibgeschützte VerfügbarkeitsgruppeFail over the primary replica on a read-scale availability group

Jede Verfügbarkeitsgruppe hat nur ein primäres Replikat.Each availability group has only one primary replica. Das primäre Replikat lässt Lese- und Schreibvorgänge zu.The primary replica allows reads and writes. Sie können ein Failover ausführen, um das primäre Replikat zu ändern.To change which replica is primary, you can fail over. In einer Verfügbarkeitsgruppe für Hochverfügbarkeit automatisiert der Cluster-Manager den Failovervorgang.In an availability group for high availability, the cluster manager automates the failover process. In einer Verfügbarkeitsgruppe mit dem Clustertyp „NONE“ erfolgt der Failovervorgang manuell.In an availability group with cluster type NONE, the failover process is manual.

Es gibt zwei Möglichkeiten, ein Failover für ein primäres Replikat in einer Verfügbarkeitsgruppe mit dem Clustertyp „NONE“ auszuführen:There are two ways to fail over the primary replica in an availability group with cluster type NONE:

  • Erzwungenes manuelles Failover mit DatenverlustForced manual failover with data loss
  • Manuelles Failover ohne DatenverlustManual failover without data loss

Erzwungenes manuelles Failover mit DatenverlustForced manual failover with data loss

Verwenden Sie diese Methode, wenn das primäre Replikat nicht verfügbar ist und nicht wiederhergestellt werden kann.Use this method when the primary replica isn't available and can't be recovered.

Um ein Failover mit Datenverlust auszuführen, stellen Sie eine Verbindung mit der SQL Server-Instanz her, die das sekundäre Zielreplikat hostet, und führen Sie dann den folgenden Befehl aus:To force failover with data loss, connect to the SQL Server instance that hosts the target secondary replica and then run the following command:

ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS;

Wenn das vorherige primäre Replikat wiederhergestellt wurde, übernimmt es auch die primäre Rolle.When the previous primary replica recovers, it will also assume the primary role. Um sicherzustellen, dass das vorherige primäre Replikat in eine sekundäre Rolle übergeht, führen Sie den folgenden Befehl für das vorherige primäre Replikat aus:To ensure that the previous primary replica transitions into a secondary role run the following command on the previous primary replica.

ALTER AVAILABILITY GROUP [ag1]  SET (ROLE = SECONDARY);

Manuelles Failover ohne DatenverlustManual failover without data loss

Verwenden Sie diese Methode, wenn das primäre Replikat verfügbar ist. Dabei müssen Sie allerdings vorübergehend oder dauerhaft die Konfiguration ändern und die SQL Server-Instanz ändern, die das primäre Replikat hostet.Use this method when the primary replica is available, but you need to temporarily or permanently change the configuration and change the SQL Server instance that hosts the primary replica. Um potenzielle Datenverluste zu vermeiden, stellen Sie vor der Ausführung eines manuellen Failovers sicher, dass das sekundäre Zielreplikat aktuell ist.To avoid potential data loss, before you issue the manual failover, ensure that the target secondary replica is up to date.

So führen ein manuelles Failover ohne Datenverlust aus:To manually fail over without data loss:

  1. Legen Sie SYNCHRONOUS_COMMIT als sekundäres Zielreplikat fest.Make the target secondary replica SYNCHRONOUS_COMMIT.

    ALTER AVAILABILITY GROUP [ag1] 
         MODIFY REPLICA ON N'<node2>' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Um zu ermitteln, ob für aktive Transaktionen ein Commit auf das primäre Replikat und gleichzeitig auf mindestens ein synchrones sekundäres Replikat ausgeführt wurde, führen Sie die folgende Abfrage aus:To identify that active transactions are committed to the primary replica and at least one synchronous secondary replica, run the following query:

    SELECT ag.name, 
       drs.database_id, 
       drs.group_id, 
       drs.replica_id, 
       drs.synchronization_state_desc, 
       ag.sequence_number
    FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag
    WHERE drs.group_id = ag.group_id; 
    

    Das sekundäre Replikat wird synchronisiert, wenn synchronization_state_desc``SYNCHRONIZED ist.The secondary replica is synchronized when synchronization_state_desc is SYNCHRONIZED.

  3. Aktualisieren Sie REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT auf 1.Update REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1.

    Das folgende Skript legt REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT auf „1“ für eine Verfügbarkeitsgruppe mit dem Namen ag1 fest.The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1 on an availability group named ag1. Ersetzen Sie ag1 vor der Ausführung des Skripts durch den Namen Ihrer Verfügbarkeitsgruppe:Before you run the following script, replace ag1 with the name of your availability group:

    ALTER AVAILABILITY GROUP [ag1] 
         SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
    

    Diese Einstellung stellt sicher, dass für jede aktive Transaktion ein Commit auf das primäre Replikat und auf mindestens ein synchrones sekundäres Replikat ausgeführt wurde.This setting ensures that every active transaction is committed to the primary replica and at least one synchronous secondary replica.

    Hinweis

    Diese Einstellung ist nicht failoverspezifisch und sollte anhand der Umgebungsanforderungen festgelegt werden.This setting is not specific to failover and should be set based on the requirements of the environment.

  4. Schalten Sie das primäre Replikat offline, um Rollenänderungen vorzubereiten.Offline the primary replica in preparation for role changes.

    ALTER AVAILABILITY GROUP [ag1] OFFLINE
    
  5. Stufen Sie das sekundäre Zielreplikat auf ein primäres hoch.Promote the target secondary replica to primary.

    ALTER AVAILABILITY GROUP ag1 FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    
  6. Aktualisieren Sie die Rolle des alten Replikats auf SECONDARY, und führen Sie den folgenden Befehl auf der SQL Server-Instanz aus, die das primäre Replikat hostet:Update the role of the old primary to SECONDARY, run the following command on the SQL Server instance that hosts the primary replica:

    ALTER AVAILABILITY GROUP [ag1] 
         SET (ROLE = SECONDARY); 
    

    Hinweis

    Verwenden Sie DROP AVAILABILITY GROUP (Verfügbarkeitsgruppe löschen), um eine Verfügbarkeitsgruppe zu löschen.To delete an availability group, use DROP AVAILABILITY GROUP. Führen Sie bei Verfügbarkeitsgruppen, die mit dem Clustertyp „NONE“ oder „EXTERNAL“ erstellt wurden, den Befehl für alle Replikate aus, die der Verfügbarkeitsgruppe angehören.For an availability group that's created with cluster type NONE or EXTERNAL, execute the command on all replicas that are part of the availability group.

Weitere InformationenSee also