Во время тестирования обновления с SQL Server 2014 SP1 (12.0.4422.0) до SQL Server 2016 CTP 3.2 (13.0.900.73) я следовал рекомендованному процессу обновления и столкнулся с проблемой, когда база данных не запускалась на старом первичном сервере после отработки отказа. на обновленный вторичный. Наша установка - это первичная реплика и одна вторичная реплика, и я выполнил следующие шаги:
- Удалить автоматическое переключение при сбое на вторичной реплике с синхронным принятием
- Обновите экземпляры вторичного сервера до новой версии
- Вручную переключиться на вторичную реплику
- Убедитесь, что базы данных подключены к новой первичной реплике.
- Обновите предыдущую первичную реплику до новой версии
Обновление вторичного устройства и аварийное переключение, чтобы сделать его первичным, работало точно так, как ожидалось. Но после обновления ранее первичной реплики я заметил, что базы данных на ней были перечислены в SSMS как не синхронизируемые / в восстановлении . Также попытка доступа к ним приведет к появлению сообщения об ошибке:
База данных ... не доступна. (ObjectExplorer)
Проверка через Журналы SQL Server, которые я видел
Невозможно открыть базу данных «...» версии 782. Обновите базу данных до последней версии.
Запрос к таблице master..sysdatabases показал, что она действительно была более старой версией и не была обновлена во время обновления:
К сожалению, в журналах не указывалось, почему оно не было обновлено, и панель мониторинга групп доступности выдала только общее предупреждение, указывающее, что состояние синхронизации данных в некоторой базе данных доступности не исправно, и нет никаких причин для этого.
Я пытался использовать TSQL для отсоединения баз данных или установить их в автономном режиме, чтобы «пнуть» их в обновление, но, поскольку они являются частью SQL AG, эти команды не работают.
Как я могу обновить базу данных до последней версии, когда она является частью SQL AG?