Pull to refresh

MS SQL 2019 и ошибка EXCEPTION_ACCESS_VIOLATION

Всем добрый день.

Не наткнулся в интернете на описание ошибки для Microsoft SQl Server 2019 вида
Process 60 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process
и решил написать небольшую статью об этом.

Само собой, проблема решается весьма просто, но, как оказывается, далеко не

Если покопаться в интернете, то найдешь всё что угодно, кроме, собственно говоря, описания данной ошибки относительно MS SQL 2019 и последующего решения.

Итак, дано: свежий сервер на базе Windows 2019 и свежая же версия MS SQL 2019. Процесс тестирования нагрузки не выдает никаких ошибок. Ошибок нет в профайлере и при использовании ряда клиентов, но перенос нагрузки в бой больно отдаётся массовыми жалобами пользователей и появлением в логе сервера ошибки вида Process 60 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process. Логи достаточно подробные. Плюс копию сервер любезно скидывает в виде дампа в директорию логов согласно текущим настроек. Само собой, код ошибки может меняться, что ничуть не даёт понимания ситуации, а программисты сбойного exe начинают бить себя пяткой в грудь и утверждать, что везде и всюду всё работает как надо. Гвоздём программы идёт утверждение, что на MS SQL 2017 точно всё работает.

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

А далее наступает самое интересное: в работе 3 сервера. После обновления двое из них получают версию 15.0.4013.40 и на них ошибка исчезает, а на третьем иная версия — 15.0.2000.5, и на нём по прежнему сыпятся данные ошибки. Само собой, мозг, натренированный на ловлю ошибок, понимает, что так не бывает, но прямой запрос с проблемного сервера к обновлениям MS утверждает обратное… Отдельно масла в огонь подливает то, что в работе в качестве сервера используется бесплатная серверная операционная система Microsoft Windows Hyper-V 2019, которая, как известно, всегда идёт в режиме Core.

Итак, начинаем копать интернет еще глубже. Ресурс Обновления SQL Server подсказывает, что хорошо бы накатить Cummulative update версии 2 (далее CU2) и тоже выводит нужную версию, а Майкрософт любезно предлагает скачать (по ссылке полный список текущих обновлений для сервера) нужное обновление.

Итак, версия 15.0.2000.5 — это SQL 2019 RTM. А 15.0.4013.40 — версия после установки CU2. Вот только обновление скачано, но не ставится. Запуск — распаковка и тишина. Не забываем, у нас Core-версия ОС, простые способы тут не всегда работают. И папка с распакованными файлами автоматически исчезает. Да и старые методы вида SQLServer2019-KB4536075-x64.exe /extract:«d:\CU2» — не работают

Как обойти проблему: запускаем установку на GUI системе. Например, на Windows 10. После распаковки появляется стандартное меню установки хотфикса. Оно не особо интересно, кроме самого факта, что папка с временными файлами остается там, куда она была распакована.

Копируем эту папку на наш сервер (Через RDP либо по сети — после Install-WindowsFeature -Name «FS-FileServer» ) и запускаем установку. Строка для запуска установки проста:
d:\CU2\setup /ACTION=Patch /ALLINSTANCES /QUIET /IAcceptSQLServerLicenseTerms

  • ACTION=Patch — установка хотфикса
  • ALLINSTANCES — ставим на все инстансы
  • QUIET — без выдачи прогресса. И только с этой опцией будет работать в Core-режиме
  • IAcceptSQLServerLicenseTerms — соглашаемся с пользовательским соглашением

Собственно, на этом всё. Просьба сильно не бить — это моя первая статья. А вот за плюс в карму буду весьма благодарен.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.