Процессы восстановления/удаления / установки для 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