Ошибка может возникнуть при обновлении SQL Server, установке CU или удалении частично установленного SQL Server.
Описание проблемы
Проблема/симптом
При попытке обновления стандартного сервера SQL 2019 (с экземпляром по умолчанию) до SQL 2022 процесс установки прервался на середине из-за ошибки прав доступа к сетевой папке с резервными копиями. В вашем случае ошибка может быть другой. После этого было предложено устранить проблему и повторно запустить обновление, однако это не сработало.
Ошибка/Результат
В нашем случае был «осиротевший экземпляр SQL Server» с именем MSSQLSERVER.INACTIVE. Стандартными методами удалить его не удалось.

Рисунок 1 — Пример ошибки неудачного обновления MS SQL.
Наиболее рекомендуемое решение: поиск в Интернете, скорее всего, приведет вас к попыткам выполнить много безрезультатных действий, и, наконец, к предложению попробовать удалить неактивный экземпляр SQL с помощью командной строки:
setup.exe /ACTION=uninstall /FEATURES=Список_функций /INSTANCENAME=Имя_экземпляра
Вариант 1. Поиск и удаление ПО через ProductCode из файла Datastore_Discovery.xml
Реальные шаги по решению проблемы:
- найдите файлы с названием Datastore_Discovery.xml (стандартный путь C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Log\папка лога с ошибкой установки>\Datastore);
- откройте Datastore_Discovery.xml в редакторе Notepad++ (как настроить форматирование описано ниже, иначе файл будет нечитаемым);
Datastore_Discovery.xml связан с процессами установки, обновления и диагностики SQL Server. Он может использоваться установщиком (Setup) или инструментами диагностики для обнаружения доступных хранилищ данных (datastores) и проверки их совместимости с требуемыми компонентами.
Форматирование XML в Notepad++:
- перейдите в раздел Плагины > Менеджер плагинов, найдите XML Tools и установите его;
- для форматирования: зайдите в Плагины, выберите подпункт XML Tools и далее Красивый вывод или Pretty Print.
Теперь ваш код выглядит аккуратно и понятно!
Далее
- найдите все упоминания MSSQLSERVER.INACTIVE в документе. Пример начала строки:
< Instance Urn="Машина[@ID='IWE']/Продукт[@ID='SQLVNEXT']/Экземпляр[@ID='MSSQLSERVER.INACTIVE']" ID="MSSQLSERVER.INACTIVE" Имя="MSSQLSERVER.INACTIVE" …
- прокрутите строки и найдите поле вида “ProductCode=”{BF4D8C4B-D931-4D62-A7ED-8A34B2FC0D1B}” (ваш код будет другим). Можно воспользоваться поиском в Notepad++ по параметру ProductCode=”{ ; “{” — скобка важна!
- может быть несколько ProductCodes, в зависимости от того, сколько раз строка <Instance URN…> содержит MSSQLSERVER.INACTIVE, поэтому убедитесь, что нашли все “ProductCodes”… НО БУДЬТЕ ОСТОРОЖНЫ, чтобы не проигнорировать любые ДОПУСТИМЫЕ экземпляры SQL. Ищите только те, которые находятся под записями MSSQLSERVER.INACTIVE.</Instance>
В нашем случае “Product ID SQLv16” — версия, которая установилась с ошибкой. “Product ID SQLv15” — рабочий экземпляр, который трогать не надо.
- после открываем командною строку с правами Администратора;
- для каждого из найденных вами “ProductCodes” для неактивных экземпляров SQL введите следующее:
msiexec /x {guid}
guid = ProductCode, в нашем случае команда будет выглядеть так:
msiexec /x {9FFAE13C-6160-4DD0-A67A-DAC5994F81BD}
выполните указанное действие для каждого кода продукта, который относится к неактивному экземпляру;
- после завершения вернитесь к установочному носителю SQL Server и запустите установку;
- после запуска главного экрана-заставки нажмите “Инструменты”, затем “Отчет об обнаружении установленных функций SQL Server”;
- откроется веб-страница со списком экземпляров SQL и всех функций для каждого экземпляра. Если вы все еще видите MSSQLSERVER.INACTIVE, вы пропустили один из ProductCodes и вам нужно еще раз проверить. В противном случае все потерянные экземпляры SQL теперь должны исчезнуть, и вы можете либо добавить функции, либо выполнить чистую переустановку экземпляра по умолчанию;
- после перезагрузки сервера обновляем SQL Server.
Вариант 2. Поиск и удаление ПО через список установленных программ Windows
Для отображения установленного ПО и его {guid} выполняем следующие действия:
- откройте командную строку и введите:
wmic product get Name,IdentifyingNumber
- найдите и выделите все {guid}, которые относятся к проблемному экземпляру SQL Server (в нашем случае — это SQL Server 2022 и все его компоненты).
Пример нашего случая IdentifyingNumber и имя ПО:
{94AEB0A0-365C-449B-B573-D2ECB353EB06} SQL Server 2022 XEvent {12618131-AA9A-4DAE-9387-CE4417955B9F} SQL Server 2022 Shared Management Objects {161B8D12-C41B-4ACF-9BB5-E1FEE6788869} SQL Server 2022 Database Engine Shared {EAC54B82-7A37-4A9E-8953-474316BD40F6} SQL Server 2022 Connection Info {8770AF64-BB4B-4404-BDD6-6AF8E4C461FC} SQL Server 2022 Common Files {73F209E4-A55B-43CD-A868-33934D894976} SQL Server 2022 Database Engine Services {0CEFE958-E71A-4171-9DEF-77E9234A5613} SQL Server 2022 SQL Diagnostics {7EFD8B19-A9E6-41CF-A96F-B9B6E30EC345} SQL Server 2022 Batch Parser {629C8FC9-3763-4C58-8264-5288AE34AFEF} Microsoft SQL Server 2022 RsFx Driver {A0F7ACBA-075F-4BC7-A85A-5DC301FCEC74} SQL Server 2022 Shared Management Objects Extensions {6A68D32C-4C0D-4847-B70C-58E6B4D76A12} SQL Server 2022 Common Files {5AB77D4E-9E5F-4627-B78B-129A5EC2858A} SQL Server 2022 DMF {BF4D8C4B-D931-4D62-A7ED-8A34B2FC0D1B} Microsoft SQL Server 2022 Setup (English)
- запустите командную строку от имени Администратора и выполните для каждого {guid}:
msiexec /x {guid}
guid = IdentifyingNumber, в нашем случае:
msiexec /x {BF4D8C4B-D931-4D62-A7ED-8A34B2FC0D1B}
После перезагрузки сервера запустите обновление SQL Server.