Процессы восстановления/удаления / установки для SQL Server 2012 Express застревают или зависают
экземпляр SQL Server 2012 Express каким-то образом поврежден.
Я подозреваю, что это каким-то образом связано с моим использованием Entity Framework, но пока нет доказательств.
при попытке ремонт экземпляр, процесс восстановления, казалось, застрял на шаге sqlengineconfigaction_repair_validation_cpu64.
Это было на этом этапе в течение длительного времени без заметного использования процессора, поэтому я, наконец, отменил процесс ремонта.
при попытке удалить экземпляр, процесс удаления, казалось, зависал на шаге sqlengineconfigaction_remove_validation_cpu64.
при попытке установить 2-й экземпляр, процесс установки, казалось, зависал на шаге SqlEngineDBStartConfigAction_install_configrc_cpu64.
для некоторых попыток службы SQL Server были не вручную заранее остановился. Для других попыток службы были остановлены вручную и изменены от "автоматического"до " ручного".
Симптомы повреждения базы данных, если это помогает:
Служба" SQL Server (SQLEXPRESS) "имеет статус" запущен "при перезагрузке системы, но застревает в состоянии" запуск " при перезапуске службы вручную с помощью опции перезапуска.
когда служба вручную остановлена, а затем запущена, она отображает эту ошибку:
Windows не удалось запустить службу SQL Server (SQLEXPRESS) на локальный компьютер. Ошибка 1053: служба не ответила на запрос запуска или управления своевременно.
SSMS (среда SQL Server Management Studio) не удается подключиться к экземпляру. Он либо пытается навсегда без тайм-аута или ошибки, либо отображает эту ошибку:
соединение было успешно установлено с сервером, но затем произошла ошибка во время рукопожатия перед входом в систему. (поставщик: поставщик SSL, Ошибка: 0-операция ожидания истекло время.) (Microsoft SQL Server, ошибка: 258)
изменить: Я предполагаю, что голосование было потому, что это не было заявлено в форме вопроса. Итак, чтобы уточнить, вопрос заключается в том, как решить проблему ремонта, удаления или установки процесса зависания?
EDIT2: В результате выясняется, что основной причиной повреждения было завершение работы ПК с Windows 7 без предварительной явной остановки служб SQL Server, хотя SQL Server Express не был активно используется в то время.
EDIT3: проблема, похоже, была решена в SQL Server 2014 Express.
2 ответов
вот что сработало для меня.
Решение 1:
- Остановка "SQL-сервер (с именем sqlexpress)" & "SQL-сервер записи VSS" услуги
и установите их тип запуска в "Manual".
- Перезагрузите компьютер.
- Запустите процесс ремонта.
- Измените тип запуска на "автоматический" и перезапустите службы.
решение 2:
- Остановка "SQL-сервер (с именем sqlexpress)" & "SQL-сервер записи VSS" услуги и установить их запуска Введите "отключен".
- Перезагрузите компьютер.
- Запустите процесс удаления, чтобы полностью удалить SQL Server Express (экземпляр + общие компоненты).
- Перезагрузите компьютер еще раз.
- [Необязательно] выполните свой любимый очиститель реестра, такой как CCleaner.
- Установите SQL Server Express (если ваша цель не была просто удалить его).
примечание: в сценарии решения 2 я попробовал процесс восстановления после перезагрузки 1-го ПК, но он застрял на шаге SqlEngineConfigAction_repair_validation_cpu64.
в моем случае причина того, что деинсталлятор застрял в SqlEngineConfigAction_repair_validation_Cpu64
были недопустимые пути к файлам в системных таблицах SQL server.
чтобы исправить это, разрешив удаление, это сработало для меня:
1) Установите службу для использования локальной учетной записи (пуск -> локальные службы -> SQL-сервер->свойства -> вход -> локальная система)
2) следуйте инструкциям здесь: https://social.technet.microsoft.com/wiki/contents/articles/31786.sql-server-not-starting-after-fresh-installation.aspx
3) повторите попытку удаления.
в случае, если вышеуказанная ссылка становится недоступной, вот краткое резюме:
- запустите службу SQL server в режиме восстановления:
NET START MSSQL$SQLEXPRESS /f /T3608
- подключиться к серверу:
SQLCMD -S .\SQLEXPRESS
- список файлов, на которые ссылается системная таблица:
SELECT name, physical_name, state_desc FROM sys.master_files ORDER BY database_id;
(go) - где путь к файлу указывает на что-то недопустимое (например, отсутствующий диск), настройте его, используя следующее:
ALTER DATABASE model MODIFY FILE ( NAME = modeldev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS01\MSSQL\DATA\model.mdf');
(идти) Обратите внимание, что файлы имеют разные имена и разные расширения (.МДФ. ,ldf) - выход из sql server (выход)
- выключить службу
NET STOP MSSQL$SQLEXPRESS