KB3173471 – КОРЕКЦИЯ: Грешка "Не може да се повтори записът на регистрационния файл" и копието е преустановено през SQL Server 2016, 2014 или 2012

Отнася се за
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

Симптоми

Имайте предвид сценария, описан по-долу:

  • Използвате Microsoft SQL Server 2016, 2014 или 2012.
  • Имате база данни, която е част от групата за наличност на AlwaysOn.
  • На първичната копия трябва да свиете файловете на базата данни, за да намалите размера им.
  • Първичната копия изпраща всички промени, които са записани в регистрационния файл на транзакциите, до вторичното копие.
  • На вторичното копие нишките за връщане прилагат промените от регистрационния файл на транзакциите към базата данни, която е част от групата за наличност.

В този случай репликата е временно преустановена.

Освен това може да получите съобщение за грешка, което е подобно на следното:

Забележка

<времево клеймо> spid41s Грешка: 3456, Степен на сериозност: 21, Щат: 1.
<Времево клеймо> spid41s Не може да се върне запис на регистрационния файл (#), за ИД на транзакция (#), на страница (#), "<dbname>" (ИД на база данни #). Страница: LSN = (#), единица за разпределение = #, тип = #. Log: OpCode = #, context #, PrevPageLSN: (#). Възстановете от архивно копие на базата данни или поправете базата данни.
<Времево клеймо> spid41s Групи за наличност AlwaysOn Движението на данни за "<dbname>" на база данни е спряно поради следната причина: "система" (Източник ИД 2; Низ на източника: 'SUSPEND_FROM_REDO'). За да възобновите движението на данните в базата данни, ще трябва да възобновите ръчно работата в базата данни. За информация как да възобновите база данни за наличност, вижте SQL Server Books Online.
<Времево клеймо> spid41s Грешка: 3313, Степен на сериозност: 21, Щат: 2.< Клеймо> spid41s По време на повтаряне на регистрирана операция в база данни '<dbname>' възникна грешка в ИД на регистрационен запис (#). Обикновено конкретната грешка преди това се регистрира като грешка в услугата за регистър на събитията на Windows. Възстановете базата данни от пълно архивно копие или поправете базата данни.

Причина

Този проблем възниква, когато промените се приложат по време на процеса на връщане, ако ядрото на базата данни срещне LSN с неправилен ред на системните страници (GAM, PFS).

Решение

Проблемът е коригиран за първи път в следната кумулативна актуализация на SQL Server:

Препоръка: Инсталирайте най-новата кумулативна актуализация за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Препоръчваме ви да изтеглите и инсталирате най-новите сборни актуализации за SQL Server:

      

        
Актуализацията предотвратява възникването на този проблем. Ако проблемът вече е възникнал, изпълнете следните стъпки, за да се присъедините отново към групата за наличност на AlwaysOn:

  1. Премахнете съществуващата вторична копия на AlwaysOn.
  2. Изпълнете следната команда върху засегнатите файлове с данни, за да премахнете незаделено пространство от базата данни:
    DBCC SHRINKFILE(<file_id>, TRUNCATEONLY)
  3. Архивирайте базата данни и регистрационните файлове.
  4. Възстановете базата данни и регистрационните файлове на вторичната копия на AlwaysOn.
  5. Присъединете се към групата за наличност на AlwaysOn.

      

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.