Sammanfattning

Anta att en tillgänglig databas som definierats i en AlwaysOn: tillgänglighetsgruppens övergångar till en "recovery väntande" eller "misstänkt" tillstånd i Microsoft SQL Server 2012. Om detta händer på gruppen tillgänglighet primära replik påverkas databasen tillgänglighet. Du kan inte komma åt databasen via klientprogrammen i den här situationen. Dessutom kan du släppa eller ta bort databasen från gruppen tillgänglighet.

Anta att Microsoft SQL Server körs och att en databas tillgänglighet är inställd på "recovery väntande" eller "misstänker" tillstånd. När du förfrågar hantering av dynamiska vyer (DMVs) på den primära repliken med hjälp av följande SQL-skript kan databasen rapporteras i NOT_HEALTHY och RECOVERY_PENDING tillstånd eller MISSTÄNKER enligt följande:

select dc.database_name, d.synchronization_health_desc, d.synchronization_state_desc, d.database_state_descfrom sys.dm_hadr_database_replica_states d join sys.availability_databases_cluster dcon d.group_database_id=dc.group_database_id and d.is_local=1
database_name   synchronization_health_desc    synchronization_state_desc     database_state_desc-------------------- ------------------------------ ------------------------------ ---------------------
<
Database name> NOT_HEALTHY NOT SYNCHRONIZING RECOVERY_PENDING(1 row(s) affected)



Den här databasen kan dessutom rapporteras som den inte synkroniseras / Recovery väntande eller misstänker läge i Microsoft SQL Server Management Studio.



När databasen är i en grupp för tillgänglighet, databasen tas bort eller återställas. Därför måste du vidta särskilda åtgärder för att återställa databasen och returnera den för produktionsanvändning. Den här artikeln beskrivs fel och begränsningar i en databas för tillgänglighet som finns i en "recovery väntande" eller "misstänker" tillstånd och återställa databasen till full funktionalitet i en grupp för tillgänglighet.

Mer Information

Följande innehåll diskuteras fel och begränsningar i en databas för tillgänglighet som finns i "recovery väntande" tillstånd i olika situationer.

Du försöker köra följande SQL-skript för att återställa databasen med parametern återställning :

restore database <Database name> with recovery

När du kör det här skriptet kan felmeddelande följande eftersom databasen är definierad i en grupp för tillgänglighet:

Msg 3104, nivå 16, tillstånd 1, rad 1
SYSTEMÅTERSTÄLLNING fungerar inte på databasen '< databasnamn >' eftersom den har konfigurerats för databasspegling eller har anslutit till en grupp för tillgänglighet. Om du vill återställa databasen använder du ändra databas att ta bort spegling eller ta bort databasen från dess tillgänglighet grupp.

Msg 3013, nivå 16, tillstånd 1, rad 1
Återställ databas onormalt.



Du försöker köra följande SQL-skript för att ta bort databasen:

drop database <Database name>

När du kör det här skriptet kan felmeddelande följande eftersom databasen är definierad i en grupp för tillgänglighet:

Msg 3752, nivå 16, tillstånd 1, rad 1
Databasen '< databasnamn >' är för närvarande ansluten till en grupp för tillgänglighet. Innan du kan släppa databasen måste du ta bort den från gruppen tillgänglighet.



Du försöker köra följande SQL-skript om du vill ta bort databasen från gruppen tillgänglighet:

alter database <Database name> set hadr off

När du försöker köra skriptet felmeddelande följande eftersom databasen tillgänglighet som hör till den primära repliken:

Msg 35240, nivå 16, tillstånd 14, rad 1
Databasen ' <databasnamn>' kan inte ansluten till eller kopplas från tillgänglighet grupp ' <namn på tillgänglighet>'. Den här åtgärden stöds inte på den primära repliken i gruppen tillgänglighet.


På grund av det här felmeddelandet kan du tvingas att växla över databasen. När databasen misslyckades över, är repliken som äger databasen "recovery väntande" i den sekundära rollen. I det här fallet försöker igen kör följande SQL-skript för att ta bort databasen från gruppen tillgänglighet vid sekundära replik:

alter database <Database name> set hadr off

Men du fortfarande inte kan ta bort databasen från gruppen tillgänglighet och du får följande felmeddelande eftersom databasen är fortfarande i en "recovery väntande" tillstånd:

Msg 921, nivå 16, tillstånd 112, rad 1
Databasen ' <databasnamn>' har ännu inte inkasserats. Vänta och försök igen.


Lösning

Lös problemet genom att använda följande metoder som passar situationen.


Lös problemet genom att vidta följande allmänna åtgärder:

  • Ta bort från gruppen tillgänglighet replik som är värd för den skadade databasen när databasen är i den sekundära rollen.

  • Åtgärda problem som påverkar systemet och som kan ha bidragit till databasfel.

  • Återställa repliken till gruppen tillgänglighet.

Om du vill utföra följande åtgärder, ansluta till den nya primära repliken och kör sedan "Ändra tillgänglighet grupp" SQL-skript om du vill ta bort repliken som är värd för databasen misslyckades tillgänglighet. Gör följande om du vill göra detta.

Obs!  De här stegen förutsätter att den primära repliken är värd den skadade databasen först. En växling vid fel måste därför först sker övergången replik som är värd för den skadade databasen till en sekundär roll.

  1. Ansluta till servern som kör SQL Server och som är värd för den sekundära repliken.

  2. Kör följande SQL-skript:

    alter availability group <Availability group name> failover
  3. Kör följande SQL-skript för att ta bort repliken som är värd för den skadade databasen från gruppen tillgänglighet:

    alter availability group <Availability group name> remove replica on '<SQL Server node name>'
  4. Lösa eventuella problem på servern som kör SQL Server och som kan bidra till databasfel.

  5. Lägga till en replik till gruppen tillgänglighet.


Om den primära repliken är värd för den skadade databasen och är den enda fungerande replik i gruppen tillgänglighet tillgänglighet grupp måste tas bort. När gruppen tillgänglighet bryts databasen kan återställas från en säkerhetskopia eller andra insatser för återställning kan användas för att återställa databaserna och återuppta produktionen.

Ta bort gruppen tillgänglighet FN följande SQL-skript:

drop availability group <Availability group name>

Nu kan du försöka återskapa databasen problematisk. Eller, eller så kan du återställa databasen från senast fungerande bra säkerhetskopia.

När du släpper en tillgänglighet grupp lyssnare resursen bryts också och avbryter programmet anslutning till tillgänglighet-databaser.

Använd någon av följande metoder för att minimera driftavbrott för att klara av programmet anslutning till lyssnaren och släpp gruppen tillgänglighet:

Metod 1: Koppla avlyssnaren till en ny tillgänglighet grupp (roll) i hanteraren för redundansklusterDen här metoden kan du behålla lyssnaren och släppa och återskapa gruppen tillgänglighet.

  1. Skapa en ny, tom tillgänglighet grupp på instansen av SQL Server som befintliga tillgänglighet grupp lyssnare dirigera anslutningar. Använda Transact-SQL-kommandot för att förenkla processen för att skapa en grupp för tillgänglighet som har inga sekundära replik eller databas:

    use mastergo
    create availability group ag for replica on 'sqlnode1' with
    (endpoint_url = 'tcp://sqlnode1:5022', availability_mode=asynchronous_commit, failover_mode=manual)
  2. Starta hanteraren för redundanskluster och klicka på roller i den vänstra rutan. I fönstret som visar vilka roller väljer du gruppen för tillgänglighet.

  3. Högerklicka på gruppen-resurs tillgänglighet i fönstret mitten längst ned under fliken resurser och klicka sedan på Egenskaper. Klicka på fliken beroenden och ta bort beroendet till lyssnaren.

  4. Högerklicka på lyssnaren under resurser, klicka på Fler åtgärderoch klicka sedan på tilldela till en annan roll.

  5. I dialogrutan Tilldela källa till rollen markerar gruppen tillgänglighet.

  6. Markera gruppen tillgänglighet i fönstret roller . I fönstret längst ned mitten under fliken resurser bör nu visas gruppen tillgänglighet och lyssnare resursen. Högerklicka på den nya resursen för tillgänglighet grupp och klicka sedan på Egenskaper.

  7. Klicka på fliken beroenden och Välj lyssnare resursen från den nedrullningsbara listrutan.

  8. Använd Object Explorer kan ansluta till instansen av SQL Server som är värd för den primära repliken i gruppen tillgänglighet i Microsoft SQL Server Management Studio. Klicka på AlwaysOn tillgänglighetgruppen tillgänglighet, och klicka sedan på Tillgänglighet grupp lyssnare. Du bör hitta lyssnaren.

  9. Högerklicka på lyssnaren och klicka på Egenskaper, Skriv portnumret för lyssnaren.

Detta säkerställer att program som använder lyssnaren kan fortfarande använda den ansluta till instansen av SQL Server som är värd för produktionsdatabaserna utan avbrott. Gruppen för tillgänglighet har kan nu tas bort och återskapas fullständigt. Eller databaser och repliker kan läggas till gruppen tillgänglighet.

Viktigt  Om du återskapar den ursprungliga gruppen tillgänglighet bör tilldela avlyssnaren till rollen tillgänglighet grupp, ställa in sambandet mellan den nya resursen för tillgänglighet grupp och lyssnaren och tilldela om porten till lyssnaren. Gör så här:

  1. Starta hanteraren för redundanskluster och klicka på roller i den vänstra rutan. I fönstret som visar vilka roller, klickar du på den nya gruppen för tillgänglighet som är värd för lyssnaren.

  2. Högerklicka på lyssnaren längst ned i fönsterrutan i mitten under fliken resurser , klicka på Fler åtgärderoch klicka sedan på tilldela till en annan roll. I dialogrutan Välj gruppen återskapas tillgänglighet.

  3. Klicka på gruppen återskapas tillgänglighet i fönstret roller . Längst ned i fönsterrutan i mitten, under fliken resurser bör nu se gruppen återskapas tillgänglighet och lyssnare resursen. Högerklicka på återskapas tillgänglighet gruppresurs och klicka sedan på Egenskaper.

  4. Klicka på fliken beroenden och Välj lyssnare resursen från den nedrullningsbara listrutan.

  5. Använd Object Explorer kan ansluta till instansen av SQL Server som är värd för den primära repliken av gruppen återskapas tillgänglighet i SQL Server Management Studio. Klicka på AlwaysOn tillgänglighetgruppen tillgänglighet, och klicka sedan på Tillgänglighet grupp lyssnare. Du bör hitta lyssnaren.

  6. Högerklicka på lyssnaren och klicka på Egenskaper, Skriv portnumret för lyssnaren.

Metod 2: Koppla avlyssnaren med en befintlig SQL Server Failover klustrade instans (SQLFCI)

Om du är värd för gruppen tillgänglighet på en SQL Server Failover klustrade instans (SQLFCI), kan du associera lyssnare klustrad resurs med gruppen SQLFCI klustrad resurs när du släpper och sedan återskapa gruppen tillgänglighet.

  1. Starta hanteraren för redundanskluster och klicka på roller i den vänstra rutan.

  2. I fönstret som visar vilka roller väljer du gruppen för tillgänglighet.

  3. Högerklicka på resursen för tillgänglighet grupp längst ned i fönsterrutan i mitten under fliken resurser , och klicka sedan på Egenskaper.

  4. Klicka på fliken beroenden och ta bort beroendet till lyssnaren.

  5. Längst ned i fönsterrutan i mitten under fliken resurser , högerklicka på lyssnaren, klicka på Fler åtgärder och klicka sedan på tilldela till en annan roll.

  6. I dialogrutan Tilldela resurs för rollen klickar du på FCI för SQL Server-instansen.

  7. Välj den SQL Server Failover klustrade instans (SQLFCI) i fönstret roller . Längst ned i fönsterrutan i mitten, under fliken resurser bör nu visas den nya lyssnare resursen.

Detta säkerställer att program som använder lyssnaren kan fortfarande använda den ansluta till instansen av SQL Server som är värd för produktionsdatabaserna utan avbrott. Gruppen för tillgänglighet har kan nu tas bort och återskapas fullständigt. ELLER databaser och repliker kan läggas till gruppen tillgänglighet.

Viktigt  När gruppen tillgänglighet återskapas, tilldela avlyssnaren till rollen tillgänglighet grupp. Ställa in sambandet mellan den nya resursen för tillgänglighet grupp och lyssnare och re-ssign port till lyssnaren:

  1. Starta hanteraren för redundanskluster och klicka på roller i den vänstra rutan.

  2. Klicka på rollen för SQL Failover klustrade instans i fönstret som visar vilka roller.

  3. Högerklicka på lyssnaren längst ned i fönsterrutan i mitten, under fliken resurser , klicka på Fler åtgärderoch klicka sedan på tilldela till en annan roll.

  4. I dialogrutan klickar du på gruppen återskapas tillgänglighet.

  5. Markera gruppen tillgänglighet i fönstret roller .

  6. Du bör se gruppen tillgänglighet och lyssnare resursen under fliken resurser . Högerklicka på den nya resursen för tillgänglighet grupp och klicka sedan på Egenskaper.

  7. Klicka på fliken beroenden och Välj lyssnare resursen från den nedrullningsbara listrutan.

  8. Använd Object Explorer kan ansluta till instansen av SQL Server som är värd för den primära repliken i gruppen tillgänglighet i SQL Server Management Studio.

  9. Klicka på AlwaysOn tillgänglighetgruppen tillgänglighet, och klicka sedan på Tillgänglighet grupp lyssnare. Du bör hitta lyssnaren.

  10. Högerklicka på lyssnaren och klicka på Egenskaper, Skriv portnumret för lyssnaren.

Metod 3: Ta bort gruppen tillgänglighet och sedan återskapa tillgänglighet grupp och lyssnare med samma namn i lyssnare

Den här metoden resulterar i en mindre strömavbrott för program som för närvarande är ansluten eftersom tillgänglighet grupp och lyssnaren tas bort och sedan skapas igen:

  1. Ta bort gruppen tillgänglighet.

    Obs! Detta kommer också att släppa lyssnaren.

  2. Skapa en ny, tom tillgänglighet grupp som omfattar listener-definitionen på samma server som är värd för produktionsdatabaserna omedelbart. Anta till exempel att avlyssnaren tillgänglighet grupp är "aglisten". Följande Transact-SQL-uttryck skapas en grupp för tillgänglighet med ingen primär eller sekundär databas, men skapar också en avlyssnare med namnet "aglisten". Program kan använda denna lyssnare för att ansluta.

    use mastergo
    create availability group ag for replica on 'sqlnode1' with
    endpoint_url = 'tcp://sqlnode1:5022', availability_mode=asynchronous_commit, failover_mode=manual)
    listener 'aglisten' (with ip ((n'11.0.0.25', n'255.0.0.0')), port=1433)go
  3. Återställa en skadad databas. Lägg sedan till den och den sekundära repliken tillbaka till gruppen tillgänglighet.


Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?

Tack för din feedback!

×