База данных SQL Server AlwaysOn застряла в режиме несинхронизации / восстановления после обновления. Ошибка: не удается открыть базу данных «…» версии 782

10

Во время тестирования обновления с SQL Server 2014 SP1 (12.0.4422.0) до SQL Server 2016 CTP 3.2 (13.0.900.73) я следовал рекомендованному процессу обновления и столкнулся с проблемой, когда база данных не запускалась на старом первичном сервере после отработки отказа. на обновленный вторичный. Наша установка - это первичная реплика и одна вторичная реплика, и я выполнил следующие шаги:

  1. Удалить автоматическое переключение при сбое на вторичной реплике с синхронным принятием
  2. Обновите экземпляры вторичного сервера до новой версии
  3. Вручную переключиться на вторичную реплику
  4. Убедитесь, что базы данных подключены к новой первичной реплике.
  5. Обновите предыдущую первичную реплику до новой версии

Обновление вторичного устройства и аварийное переключение, чтобы сделать его первичным, работало точно так, как ожидалось. Но после обновления ранее первичной реплики я заметил, что базы данных на ней были перечислены в SSMS как не синхронизируемые / в восстановлении . Также попытка доступа к ним приведет к появлению сообщения об ошибке:

База данных ... не доступна. (ObjectExplorer)

Проверка через Журналы SQL Server, которые я видел

Невозможно открыть базу данных «...» версии 782. Обновите базу данных до последней версии.

Запрос к таблице master..sysdatabases показал, что она действительно была более старой версией и не была обновлена ​​во время обновления:

Версия системной базы данных SSMS

К сожалению, в журналах не указывалось, почему оно не было обновлено, и панель мониторинга групп доступности выдала только общее предупреждение, указывающее, что состояние синхронизации данных в некоторой базе данных доступности не исправно, и нет никаких причин для этого.

Я пытался использовать TSQL для отсоединения баз данных или установить их в автономном режиме, чтобы «пнуть» их в обновление, но, поскольку они являются частью SQL AG, эти команды не работают.

Как я могу обновить базу данных до последней версии, когда она является частью SQL AG?

Грег Брей
источник

Ответы:

10

Пройдя некоторое время в SSMS, я заметил, что на вторичной реплике есть значок паузы рядом с базами данных доступности. Первичный показал, что оба были "зелеными", но на вторичном элементе была опция Возобновить перемещение данных . Я возобновил первую базу данных, и сразу же было удалено сообщение о состоянии In Recovery . Минуту спустя он изменился с «Не синхронизируется» на «Синхронизирован», и все заработало как положено.

Вот скриншот базы данных AG после того, как я исправил «Patch», но до исправления тестовой базы данных:

Возобновить перемещение данных в SQL AG

Обратите внимание, что вы также можете использовать TSQL на вторичном сервере, чтобы возобновить репликацию для нескольких баз данных одновременно:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO
Грег Брей
источник
1
Знаете ли вы, что привело к приостановке репликации? а можно узнать с каких пор репликация была приостановлена?
JohnG