KB3173471 - FIX: Fout 'Logboekregistratie kan niet opnieuw worden uitgevoerd' en replica wordt onderbroken in SQL Server 2016, 2014 of 2012

Van toepassing op
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

Symptomen

Neem als voorbeeld het volgende scenario:

  • U gebruikt Microsoft SQL Server 2016, 2014 of 2012.
  • U hebt een database die deel uitmaakt van de AlwaysOn Availability Group.
  • Op de primaire replica verkleint u de databasebestanden om hun grootte te beperken.
  • De primaire replica verzendt alle wijzigingen die zijn vastgelegd in het transactielogboek naar de secundaire replica.
  • Op de secundaire replica worden de wijzigingen in het transactielogboek toegepast op de database die deel uitmaakt van de beschikbaarheidsgroep.

In dit scenario wordt de replica onderbroken.

Bovendien wordt een foutbericht van de volgende strekking weergegeven:

Opmerking

<Tijdstempel> SPID41S-fout: 3456, ernst: 21, status: 1.
<Tijdstempel> SPID41S Kan logboekrecord (#), voor transactie-id (#), op pagina (#), database '<dbname>' (database-id #) niet opnieuw uitvoeren. Pagina: LSN = (#), toewijzingseenheid = #, type = #. Log: OpCode = #, context #, PrevPageLSN: (#). Een back-up van de database terugzetten of de database herstellen.
<tijdstempel> spid41s AlwaysOn Availability Groups gegevensverplaatsing voor database '<dbname>' is om de volgende reden onderbroken: 'system' (Bron-id 2; Brontekenreeks: 'SUSPEND_FROM_REDO'). Als u de gegevensverplaatsing in de database wilt hervatten, moet u de database handmatig hervatten. Zie SQL Server Books Online voor informatie over het hervatten van een beschikbaarheidsdatabase.
<tijdstempel> spid41s Fout: 3313, ernst: 21, status: 2.tijdstempel>< spid41s Tijdens het opnieuw uitvoeren van een geregistreerde bewerking in database '<dbname>' is een fout opgetreden bij de logboekrecord-id (#). Normaal gesproken wordt de specifieke fout eerder geregistreerd als een fout in de Windows Event Log-service. Zet de database terug vanaf een volledige back-up of repareer de database.

Oorzaak

Dit probleem treedt op wanneer wijzigingen worden toegepast tijdens het proces voor opnieuw uitvoeren als de database-engine LSN's tegenkomt die niet in de juiste volgorde staan op de systeempagina's (GAM, PFS).

Oplossing

Het probleem werd voor het eerst opgelost in de volgende cumulatieve update van SQL Server:

Aanbeveling: Installeer de meest recente cumulatieve update voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. We raden u aan de meest recente cumulatieve updates voor SQL Server te downloaden en te installeren:

      

        
De update voorkomt dat dit probleem optreedt. Als het probleem zich al voordoet, volgt u deze stappen om opnieuw lid te worden van de AlwaysOn Availability Group:

  1. Verwijder de bestaande secundaire AlwaysOn-replica.
  2. Voer de volgende opdracht uit op de betrokken gegevensbestanden om niet-toegewezen ruimte uit de database te verwijderen:
    DBCC SHRINKFILE(<file_id>, TRUNCATEONLY)
  3. Maak een back-up van de database en logbestanden.
  4. De database en logboeken op de secundaire AlwaysOn replica terugzetten.
  5. Deelnemen aan de AlwaysOn Availability Group.

      

Status

Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.