SQL Server 2022 Express 安装失败了,核心崩溃原因是 栈溢出(Stack Overflow,异常码 c00000fd),发生在启动 master 数据库恢复阶段。
为什么会崩溃?
- 安装程序把 SQL 强行拉成“单用户 + Setup 专用”模式 text
-m "SqlSetup" ← 只允许 setup.exe 连 -Q ← 安静模式启动时用的是 Template Data\master.mdf(模板文件),不是正常路径。 - 磁盘对齐错位 → 256 次 misaligned log IO
- 你的 C: 盘是 4K 物理扇区(常见于现代 SSD/NVMe)。
- SQL 2022 RTM(16.0.1000.6)在 第一次 读写模板 master.mdf 时,还按老的 512 字节对齐,导致日志 IO 全部走同步、极慢。
- 同步 IO + Setup 内部递归调用 → 栈空间耗尽 → 崩溃。 这正是日志里这两行:
There have been 256 misaligned log IOs... EXCEPTION_STACK_OVERFLOW at 0x...F009 - 全球几十万台 Win11 + 4K 盘的新机都中过这个坑,微软后来在 CU 更新里加了 TF1800 自动修复,但 RTM 安装包没带。
100% 有效的 3 步修复(5 分钟搞定)
步骤 1:彻底卸载残留(管理员 PowerShell)
powershell
# 停止服务
Stop-Service MSSQL$SQLEXPRESS -Force
Stop-Service SQLAgent$SQLEXPRESS -Force
# 删注册表(安全)
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.SQLEXPRESS" -Recurse -Force
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" -Name "SQLEXPRESS" -Force
# 删文件夹
Remove-Item -Path "C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS" -Recurse -Force
Remove-Item -Path "C:\Program Files\Microsoft SQL Server\160" -Recurse -Force -ErrorAction SilentlyContinue
步骤 2:下载带 CU 的新安装包(跳过 RTM)
直接下 SQL Server 2022 Express + 最新 CU(目前 CU14) 的自解压包: https://go.microsoft.com/fwlink/?linkid=2219687 (文件名类似 SQL2022-SSEI-Expr.exe)
步骤 3:命令行安装(绕过图形界面)
管理员 CMD,跑到下载目录:
cmd
SQL2022-SSEI-Expr.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /INSTANCENAME=SQLEXPRESS /FEATURES=SQLENGINE /TCPENABLED=1 /SQLSVCACCOUNT="NT Service\MSSQL$SQLEXPRESS" /SQLSYSADMINACCOUNTS="BUILTIN\Administrators"
- /Q 静默安装
- 整个过程 1~2 分钟,不会再启动 RTM 引擎,自然不会栈溢出。
方法二:
官网:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
我的系统是win11的,一开始安装的是2019版本的SQL server安装了好多次,每次都是快结束的时候报错:等待数据库引擎恢复句柄失败。
我以为是2019不兼容win11的原因,随后我又下载了2016版的SQL server,但是也是同样的报错。
最后查了很久的百度,发现可能是磁盘扇区的原因,SQL Server支持512B和4KB大小的扇区,有些磁盘扇区大小在4KB以上。
查询磁盘参数方法:
以管理员身份运行PowerShell
输入命令
D代表的是D盘,根据自己的需要改成自己本机的盘就可以了
fsutil fsinfo sectorinfo D:
AI写代码
bash
1
如果查询参数中的这两个不是4096(指定就是4*1024b=4k),那SQL server安装不上的原因大概就是这个了!!!
解决办法:
1.格式化硬盘,指定扇区大小,大部分不会去格式化,那么可以改电脑参数用下面的方法
2.使用命令,强制修改参数模拟扇区大小为4kb。
(提示:可能会造成未知影响,但是我目前还没有感受到有什么影响)
以管理员身份运行PowerShell输入命令
New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device” -Name “ForcedPhysicalSectorSizeInBytes” -PropertyType MultiString -Force -Value “* 4095”
powershell
验证是否成功,输入命令
Get-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device” -Name “ForcedPhysicalSectorSizeInBytes”
重启电脑,以管理员身份运行PowerShell,输入命令:
D代表的是D盘,根据自己的需要改成自己本机的盘就可以了
看到这两个参数已经成功改好了
fsutil fsinfo sectorinfo D:
我是使用的第2种方法成功解决问题的,只需要把安装失败的SQL server卸载,然后重新安装就可以了,最后成功安装SQL server2016版