Проблемы при обновлении до SQL Server 2022

Область применения: SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016

Сводка

В этой статье описываются распространенные проблемы, которые могут возникнуть при обновлении до SQL Server 2022 года, а также приводятся решения и обходные пути для каждого из них. Описанные сценарии включают дампы нарушений доступа, связанные с профилированием упрощенных запросов, заблокированными обновлениями, вызванными частичной установкой SQL Server, экземплярами отказоустойчивого кластера (FCI), которые не могут быть подключены после обновления, и ошибки сценария обновления репликации, когда база данных распространителя является частью группы доступности AlwaysOn (AG). Воспользуйтесь этим руководством, чтобы устранить сбой при обновлении на месте до SQL Server 2022 и снова перевести экземпляр SQL Server в рабочее состояние.

Дампы нарушений доступа во время обновления в среде AlwaysOn

Эта ошибка возникает при обновлении до SQL Server 2022 в среде AlwaysOn. Сообщение об ошибке и связанные записи журнала указывают на неустранимое исключение, созданное во время процесса обновления.

Сообщение об ошибке

Код исключения: c0000005 EXCEPTION_ACCESS_VIOLATION

Журнал событий приложения

Error: A user request from the session with SPID <SPID> generated a fatal exception. SQL Server is terminating this session.
Information: Windows Error Reporting - Fault bucket INVALID_REQUEST, type 0

Журнал ошибок SQL Server

Error: A user request from the session with SPID <SPID> generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.

Решение

Это известная проблема, связанная с LIGHTWEIGHT_QUERY_PROFILING в SQL Server 2022.

Проблема устранена в Угулативном обновлении 4 для SQL Server 2022 и Cumulative Update 20 для SQL Server 2019.

Обходной путь

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

ALTER DATABASE SCOPED CONFIGURATION SET LIGHTWEIGHT_QUERY_PROFILING = OFF;

Обновление заблокировано неактивным экземпляром SQL Server 2022 г.

Обновление до SQL Server 2022 невозможно, так как компьютер имеет неактивный экземпляр SQL Server 2022.

Причина

Эта проблема возникает, когда предыдущая SQL Server установка завершается ошибкой и оставляет частично установленный экземпляр на компьютере. Программа установки SQL Server не автоматически откатывает установку при возникновении сбоя. Частично установленный экземпляр не включает выпуск SQL Server, который вы пытались установить, что приводит к сбою последующих попыток установки той же версии.

Решение

Выполните действия, описанные в разделе Удаление частичной установки SQL Server, а затем перезапустите обновление.

После обновления не удается перевести экземпляр отказоустойчивого кластера в оперативный режим

После обновления SQL Server с более ранней версии до SQL Server 2022 в экземпляре кластера отработки отказа (FCI) экземпляр может не перейти в состояние «В сети». В диспетчере отказоустойчивости кластеров роль SQL Server имеет состояние сбоя, и экземпляр не удается запустить.

Причина

Экземпляр SQL Server зависает в режиме обновления скрипта, что предотвращает его запуск. Во время обновления SQL Server запускает скрипты обновления в рамках последовательности запуска. Если один из этих скриптов завершается с ошибкой или не выполняется до конца, экземпляр остается в режиме обновления скриптов и не может перейти в рабочее состояние.

Обходной путь

Чтобы перевести экземпляр SQL Server в оперативный режим, обойдите выполняющийся сценарий обновления, выполнив действия, описанные в разделе Устранение сбоев сценария обновления при применении обновления.

Примечание.

Флаг трассировки -T902 отключает выполнение скрипта обновления во время запуска. Удалите флаг трассировки после устранения проблемы с базовым скриптом обновления, чтобы выполнить ожидающие шаги обновления.

Ошибка сценария обновления репликации при наличии базы данных распространителя в группе доступности

Ошибка репликации возникает при обновлении до SQL Server 2022 на сервере, на котором размещена база данных distribution в группе доступности (AG).

Примечание.

Эта проблема также может возникнуть при обновлении до SQL Server 2019 с SQL Server 2016 SP2 CU3, SQL Server 2017 CU6 или более поздней версии. Исправление этой проблемы доступно в накопительном обновлении 21 для SQL Server 2019.

Сообщение об ошибке

Установка SQL Server успешно завершается, но отображает ошибку "Произошла ошибка при выполнении скриптов обновления репликации" в компоненте репликации. При выполнении восстановления на экземпляре в этом состоянии вы получите то же сообщение об ошибке.

Журнал ошибок SQL Server

Executing sp_vupgrade_replication.
Could not open distribution database <distribution_db_name> because it is offline or being recovered. Replication settings and system objects could not be upgraded. Be sure this database is available and run sp_vupgrade_replication again.
Error executing sp_vupgrade_replication.
Saving upgrade script status to 'SOFTWARE\Microsoft\MSSQLServer\Replication\Setup'.

Причина

Ошибка возникает, когда база данных распространителя входит в группу доступности (AG) и предпринимается попытка обновления на месте.

Решение

Исправление доступно в Cumulative Update 5 для SQL Server 2022.

Обходной путь

Если вы не можете применить накопительное обновление, выполните следующие действия.

  1. Удалите базу данных распространителя из группы доступности.
  2. Выполните обновление до SQL Server 2022.
  3. После завершения обновления добавьте базу данных распространителя обратно в группу доступности.