Symptom
Tänk dig följande scenario:
- Du använder Microsoft SQL Server 2016, 2014 eller 2012.
- Du har en databas som ingår i AlwaysOn-tillgänglighetsgruppen.
- På den primära repliken krymper du databasfilerna för att minska deras storlek.
- Den primära repliken skickar alla ändringar som registreras i transaktionsloggen till den sekundära repliken.
- På den sekundära repliken tillämpar gör om trådarna ändringarna från transaktionsloggen till databasen som ingår i tillgänglighetsgruppen.
I det här scenariot pausas repliken.
Dessutom kan du få ett felmeddelande som ser ut ungefär så här:
Obs
<tidsstämpel> spid41s Fel: 3456, Allvarlighetsgrad: 21, Tillstånd: 1.
<tidsstämpel> spid41s Det gick inte att göra om loggposten (#), för transaktions-ID (#), på sidan (#), databasen dbname<> (databas-ID #). Sida: LSN = (#), allokeringsenhet = #, typ = #. Log: OpCode = #, context #, PrevPageLSN: (#). Återställ från en säkerhetskopia av databasen eller reparera databasen.
<tidsstämpel> SPID41s Förflyttning av AlwaysOn-tillgänglighetsgrupper för databasen "<dbname>" har pausats av följande anledning: "system" (Käll-ID 2; Källsträng: 'SUSPEND_FROM_REDO'). Om du vill återuppta dataflytten i databasen måste du återuppta databasen manuellt. Information om hur du återupptar en tillgänglighetsdatabas finns i SQL Server Books Online.
<tidsstämpel> spid41s Fel: 3313, Allvarlighetsgrad: 21, Tillstånd: 2.tidsstämpel<> spid41s Under omgörning av en loggad åtgärd i databasen dbname>< uppstod ett fel vid loggpost-ID (#). Vanligtvis har det specifika felet tidigare loggats som ett fel i händelseloggtjänsten i Windows. Återställ databasen från en fullständig säkerhetskopia eller reparera databasen.
Orsak
Det här problemet uppstår när ändringar tillämpas under gör om-processen om databasmotorn påträffar LSN som inte är i ordning på systemsidorna (GAM, PFS).
Lösning
Problemet åtgärdades först i följande kumulativa uppdatering av SQL Server:
- Kumulativ uppdatering 1 för SQL Server 2016
- Kumulativ uppdatering 8 för SQL Server 2014 SP1
- Kumulativ uppdatering 6 för SQL Server 2012 SP3
- Kumulativ uppdatering 15 för SQL Server 2012 SP2
Rekommendation: Installera den senaste kumulativa uppdateringen för SQL Server
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Vi rekommenderar att du laddar ned och installerar de senaste kumulativa uppdateringarna för SQL Server:
- Senaste kumulativa uppdateringen för SQL Server 2016
- Senaste kumulativa uppdateringen för SQL Server 2014 SP1
- Senaste kumulativa uppdateringen för SQL Server 2012 SP3
- Senaste kumulativa uppdateringen för SQL Server 2012 SP2
Uppdateringen förhindrar att det här problemet uppstår. Om problemet redan har uppstått följer du dessa steg för att återansluta till AlwaysOn-tillgänglighetsgruppen:
- Ta bort den befintliga sekundära AlwaysOn-repliken.
- Kör följande kommando på de berörda datafilerna för att ta bort oallokerat utrymme från databasen:
DBCC SHRINKFILE(<file_id>, TRUNCATEONLY) - Säkerhetskopiera databasen och loggfilerna.
- Återställ databasen och loggarna på den sekundära AlwaysOn-repliken.
- Gå med i gruppen för AlwaysOn-tillgänglighet.
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".
Referenser
Läs om den terminologi som Microsoft använder för att beskriva programuppdateringar.