Repair/Remove/Install SQL Server 2012 Express 的进程卡住或挂起

Repair/Remove/Install processes for SQL Server 2012 Express get stuck or hung

SQL Server 2012 Express 的一个实例以某种方式损坏。
我怀疑这在某种程度上与我使用 Entity Framework 有关,但还没有证据。

尝试修复实例时,修复过程似乎停滞在SqlEngineConfigAction_repair_validation_Cpu64步。
在那一步呆了很长时间,没有明显的CPU使用,所以我最终取消了修复过程。

尝试删除 实例时,卸载过程似乎挂在 SqlEngineConfigAction_remove_validation_Cpu64 步骤。

当尝试 安装 第二个实例时,安装过程似乎挂在 SqlEngineDBStartConfigAction_install_configrc_Cpu64 步骤。

对于某些尝试,SQL 服务器服务 事先手动停止。对于其他尝试,服务被手动停止,并从 "Automatic" 更改为 "Manual"。

数据库损坏的症状,万一这有帮助:
"SQL Server (SQLEXPRESS)" 服务在系统重新启动时的状态为 "Started",但在使用“重新启动”选项手动重新启动服务时卡在 "Starting" 状态。

手动停止然后启动服务时,显示此错误:

Windows could not start the SQL Server (SQLEXPRESS) service on Local Computer. Error 1053: The service did not respond to the start or control request in a timely fashion.

SSMS (SQL Server Management Studio) 无法连接到实例。它要么永远尝试而不显示超时或错误,要么显示此错误:

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The wait operation timed out.)(Microsoft SQL Server, Error: 258)

编辑: 我猜反对票是因为这不是以问题的形式陈述的。所以澄清一下,问题是如何解决修复、删除或安装进程挂起的问题?

编辑2: 作为后续,事实证明损坏的根本原因是在没有首先明确停止 SQL 服务器服务的情况下关闭 Windows 7 PC,即使 SQL Server Express 没有被主动启动当时用过。

EDIT3:问题似乎已在 SQL Server 2014 Express 中得到解决。

以下是对我有用的方法。

解决方案一:
- 停止 "SQL Server (SQLEXPRESS)" & "SQL Server VSS Writer" 服务 并将它们的启动类型设置为 "Manual".
- 重启电脑。
- 运行修复过程。
- 将启动类型改回 "Automatic" 并重新启动服务。

方案二:
- 停止 "SQL Server (SQLEXPRESS)" 和 "SQL Server VSS Writer" 服务并将其启动类型设置为“已禁用”。
- 重启电脑。
- 运行 删除进程以完全卸载 SQL Server Express(实例 + 共享组件)。
- 再次重启电脑。
- [可选] 运行 你最喜欢的注册表清洁器,例如 CCleaner。
- 安装 SQL Server Express(除非您的目标只是卸载它)。

注意:在解决方案 2 的情况下,我在第一台 PC 重启后尝试了修复过程,但它卡在了步骤 SqlEngineConfigAction_repair_validation_Cpu64。

在我的例子中,卸载程序卡在 SqlEngineConfigAction_repair_validation_Cpu64 的原因是 SQL 服务器系统 table 中的 文件路径无效 .

要更正此问题,允许卸载,这对我有用:

1) 将服务设置为使用本地帐户(开始 -> 本地服务 -> SQL-服务器 -> 属性 -> 登录 -> 本地系统帐户)

2) 按照此处的步骤操作: https://social.technet.microsoft.com/wiki/contents/articles/31786.sql-server-not-starting-after-fresh-installation.aspx

3) 重试卸载。

如果上述 link 变得不可用,这里有一个简短的摘要:

  • 以恢复模式启动SQL服务器服务: NET START MSSQL$SQLEXPRESS /f /T3608
  • 连接到服务器:SQLCMD -S .\SQLEXPRESS
  • 列出系统table中引用的文件: SELECT name, physical_name, state_desc FROM sys.master_files ORDER BY database_id;(去)
  • 只要文件路径指向无效的地方(例如丢失的驱动器),请使用以下方法对其进行调整:ALTER DATABASE model MODIFY FILE ( NAME = modeldev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS01\MSSQL\DATA\model.mdf'); (走) 请注意,这些文件具有不同的名称和不同的扩展名(.mdf、.ldf)
  • 退出sql服务器(退出)
  • 关闭服务NET STOP MSSQL$SQLEXPRESS

我安装了两个版本的 SQL 服务器。卸载一个后它冻结在 SqlEngineConfigAction_remove_validation_Cpu64。对我有用的解决方案只是 运行 从媒体卸载。我想在卸载一个版本后它弄乱了卸载文件;所以从控制面板添加删除冻结的其他卸载。所以 我从那里安装了 SQLServer iso 和 运行

setup.exe /Action=Uninstall

请记住从 Add/Remove 程序中卸载 SQL Server 的所有其他条目(当然除了导致问题的条目,即 Microsoft SQL Server 2008 R2(64 位) )).

仅供参考:

  1. 我在安装的 iso 文件夹中从 cmd(运行 作为管理员)执行了 setup.exe /Action=Uninstall
  2. 另外请卸载其他条目后重新启动。这样所有 SQL 服务都停止了。
  3. 确保所有 SQL 服务器服务在重新启动前停止或禁用。

在自定义安装中,将 SQL 服务器数据库引擎 的帐户名称更改为“NT AUTHORITY\SYSTEM”解决了 [=18= 的安装问题] 服务器 Express 2017.

详情:http://woshub.com/sql-server-database-engine-startup-handle/

试试 sbEnable=1

这个 advice from TechNet 对我有用:

Following Registry-Key must be set to 1[...]:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\sbEnable = 1

在我的例子中,注册表目录根本不存在。并且卸载仍然停留在该位置几分钟(不到 10 分钟)。但最终它继续并结束了。

就我而言,我试图卸载 SQL Server 2008 R2 的实例,该实例在安装过程中卡在 SqlEngineDBStartConfigAction_install_configrc_Cpu64 步骤。 卸载卡在 SqlEngineConfigAction_remove_validation_Cpu64 步骤。对我有帮助的是遵循以下步骤:

  1. 开始菜单 -> 查看本地服务 -> SQL服务器(您的实例名称) -> 属性 -> 将启动类型设置为禁用。 注意:服务在启动时卡住了。
  2. 重新启动计算机。
  3. 再次检查本地服务。现在SQL服务器服务不会处于启动状态。
  4. 现在再次卸载 SQL 服务器。

希望有用。

我发现只需从任务管理器中停止 SQL 服务器后台进程即可取消阻止。 SQL 服务器实例似乎在 Services.msc

中停止时遇到问题