Lezen in het Engels

Delen via


Schakel verbeterde database-failover in naar een database in een Always On-beschikbaarheidsgroep

van toepassing op:SQL Server-

Als in SQL Server 2012 en 2014 een database die deelneemt aan een beschikbaarheidsgroep op de primaire replica, de mogelijkheid om transacties te schrijven verliest, wordt er geen failover geactiveerd, zelfs niet als de replica's worden gesynchroniseerd en geconfigureerd voor automatische failover.

SQL Server 2016 introduceert een nieuw optioneel gedrag met de naam verbeterde databasefailover die kunnen worden ingesteld door de wizard of met behulp van Transact-SQL. Als deze optie is ingeschakeld en automatische failover is geconfigureerd, wordt een failover geactiveerd naar een gesynchroniseerde secundaire replica wanneer één database die deelneemt aan een beschikbaarheidsgroep geen transacties meer kan schrijven.

scenario 1

Een beschikbaarheidsgroep wordt geconfigureerd tussen exemplaar A en exemplaar B, met één database met de naam DB1. Het gegevensbestand van DB1 bevindt zich op Station E en het transactielogboekbestand bevindt zich op Station F. De beschikbaarheidsmodus is ingesteld op synchrone doorvoer met automatische failover. De nieuwe optie voor verbeterde databasefailover is geconfigureerd voor de beschikbaarheidsgroep. De twee replica's zijn momenteel gesynchroniseerd. Een probleem zorgt ervoor dat Drive E mislukt. Dit scenario veroorzaakt geen uitgebreide databasefailover, omdat Drive E het transactielogboek niet bevat.

In het bovenstaande scenario, als fout 823 4 opeenvolgende keren wordt gerapporteerd terwijl de optie voor databasefailover is ingesteld op ingeschakeld, informeert SQL Server Windows Failover Cluster om de juiste actie te ondernemen op basis van het beleid voor failover van ag-rollen. Dit kan worden geconfigureerd om een failover uit te voeren of om een resource opnieuw op te starten.

scenario 2

Dit heeft dezelfde configuratie van de beschikbaarheidsgroep als Scenario 1. In plaats van dat Drive E uitvalt, valt deze keer de transactielogboekschijf, Schijf F, uit. Hiermee wordt een failover geactiveerd, omdat deze voldoet aan de voorwaarde die wordt gedekt door een uitgebreide databasefailover: het transactielogboek is niet bereikbaar, wat betekent dat de database geen transacties kan schrijven.

scenario 3

Er wordt een beschikbaarheidsgroep geconfigureerd tussen exemplaar A en exemplaar B met twee databases: DB1 en DB2. De beschikbaarheidsmodus is ingesteld op synchrone commit met een automatische failovermodus, en verbeterde databasefailover is ingeschakeld. Toegang tot de schijf met db2-gegevens en transactielogboekbestanden gaat verloren. Wanneer het probleem wordt gedetecteerd, wordt automatisch een failover van de beschikbaarheidsgroep uitgevoerd naar exemplaar B.

Verbeterde failover configureren

Verbeterde databasefailover kan worden geconfigureerd met behulp van SQL Server Management Studio of Transact-SQL. De PowerShell-cmdlets hebben momenteel niet deze mogelijkheid. Uitgebreide databasefailover is standaard uitgeschakeld.

SQL Server Management Studio

Het inschakelen van een verbeterde databasefailover is mogelijk tijdens het maken van een toegankelijkheidsgroep met behulp van SQL Server Management Studio. De enige manier om deze uit te schakelen of in te schakelen nadat u de beschikbaarheidsgroep hebt gemaakt, is door Transact-SQL te gebruiken.

handmatige beschikbaarheidsgroep maken

Gebruik de instructies in het artikel Gebruik het dialoogvenster Nieuwe beschikbaarheidsgroep (SQL Server Management Studio) om de beschikbaarheidsgroep te maken. Als u geavanceerde databasefailover wilt inschakelen, vinkt u het selectievakje aan naast gezondheidsdetectie op databaseniveau.

De wizard beschikbaarheidsgroep gebruiken

Gebruik de aanwijzingen in het artikel De Beschikbaarheidsgroepwizard (SQL Server Management Studio). De optie voor het inschakelen van verbeterde databasefailover vindt u in het dialoogvenster Naam van beschikbaarheidsgroep opgeven. Om dit in te schakelen, vinkt u het selectievakje aan naast Gezondheidsdetectie op databaseniveau.

Transact-SQL

Om het verbeterde failover-gedrag van de database bij het maken van een beschikbaarheidsgroep te configureren, moet DB_FAILOVER op AAN worden ingesteld.

SQL
CREATE AVAILABILITY GROUP [AGNAME]
WITH ( DB_FAILOVER = ON)
...

Als u dit gedrag wilt toevoegen nadat een beschikbaarheidsgroep is geconfigureerd, gebruikt u de opdracht ALTER AVAILABILITY GROUP:

SQL
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = ON)

Als u dit gedrag wilt uitschakelen, voert u de volgende opdracht ALTER AVAILABILITY GROUP uit:

SQL
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = OFF)

Dynamische beheerweergave

Als u wilt zien of een beschikbaarheidsgroep uitgebreide databasefailover heeft ingeschakeld, voert u een query uit in de dynamische beheerweergave sys.availability_groups. De kolom db_failover heeft een nul als deze is uitgeschakeld of 1 als deze is ingeschakeld.

Volgende stappen