KB3173471 – ÅTGÄRD: Det gick inte att göra om loggposten-fel och repliken är pausad i SQL Server 2016, 2014 eller 2012

Gäller för
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Service Pack 3 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core

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:

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:

      

        
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:

  1. Ta bort den befintliga sekundära AlwaysOn-repliken.
  2. 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)
  3. Säkerhetskopiera databasen och loggfilerna.
  4. Återställ databasen och loggarna på den sekundära AlwaysOn-repliken.
  5. 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.