KB3173471 – OPRAVA: Chyba "Nelze znovu provést záznam protokolu" a replika je pozastavena v SQL Server 2016, 2014 nebo 2012

Platí pro
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

Příznaky

Vezměte v úvahu následující scénář:

  • Používáte Microsoft SQL Server 2016, 2014 nebo 2012.
  • Máte databázi, která je součástí skupiny dostupnosti AlwaysOn.
  • Na primární replice zmenšíte soubory databáze, abyste zmenšili jejich velikost.
  • Primární replika odešle všechny změny zaznamenané v transakčním protokolu do sekundární repliky.
  • Na sekundární replice vlákna znovu použijí změny z transakčního protokolu do databáze, která je součástí skupiny dostupnosti.

V tomto scénáři je replika pozastavená.

Dále se může zobrazit chybová zpráva podobná této:

Poznámka

<Časové razítko> SPID41S Chyba: 3456, Závažnost: 21, Stav: 1.
<Časové razítko> SPID41S Nepovedlo se znovu provést záznam protokolu (#), pro ID transakce (#), na stránce (#), databáze '<dbname>' (ID databáze #). Stránka: LSN = (#), alokační jednotka = #, typ = # Protokol: OpCode = #, kontext #, PrevPageLSN: (#). Obnovení databáze ze zálohy nebo oprava databáze.
<časové razítko> spid41s AlwaysOn Availability Groups přesun dat pro databázi dbname<> byl pozastaven z následujícího důvodu: "system" (ID zdroje 2; Zdrojový řetězec: SUSPEND_FROM_REDO). Pokud chcete obnovit přesun dat v databázi, budete muset obnovit provoz databáze ručně. Informace o tom, jak obnovit dostupnost databáze, najdete na webu SQL Server Books Online.
<Časové razítko> SPID41S Chyba: 3313, Závažnost: 21, Stav: 2.Časové< razítko> SPID41S Při opakování zaprotokolované operace v databázi dbname<> došlo k chybě v ID záznamu protokolu (#). Obvykle je konkrétní chyba dříve zaznamenána jako chyba ve službě Protokol událostí systému Windows. Obnovte databázi z úplné zálohy, nebo ji opravte.

Příčina

K tomuto problému dochází, když se během procesu opětovného provedení použijí změny, pokud databázový stroj narazí na nefunkční LSN na systémových stránkách (GAM, PFS).

Řešení

Tento problém byl poprvé opraven v následující kumulativní aktualizaci SQL Server:

Doporučení: Nainstalujte nejnovější kumulativní aktualizaci pro SQL Server

Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Doporučujeme stáhnout a nainstalovat nejnovější kumulativní aktualizace pro SQL Server:

      

        
Aktualizace zabrání tomu, aby k tomuto problému došlo. Pokud k problému už došlo, připojte se ke skupině dostupnosti AlwaysOn pomocí těchto kroků:

  1. Odeberte existující sekundární repliku AlwaysOn.
  2. Spuštěním následujícího příkazu odeberte z databáze nepřidělené místo:
    DBCC SHRINKFILE(<file_id>, TRUNCATEONLY)
  3. Zálohujte databázi a soubory protokolu.
  4. Obnovte databázi a protokoly na sekundární replice AlwaysOn.
  5. Připojte se ke skupině dostupnosti AlwaysOn.

      

Stav

Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.

Reference

Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.