ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows 11安装SQL Server 2019常见问题与解决方案

Windows 11安装SQL Server 2019常见问题与解决方案

1. Windows 11安装SQL Server失败全攻略:从报错到解决

最近帮同事处理Windows 11安装SQL Server 2019反复失败的问题,发现网上很多教程都只给解决方案却不解释原理。作为踩过所有坑的DBA,我把完整排查逻辑和根治方案整理成这份指南。无论遇到安装程序闪退、组件报错还是权限问题,按照这个思路都能快速定位。

1.1 先搞清楚安装失败的类型

SQL Server安装失败通常会在以下阶段卡住:

  • 安装程序启动阶段(根本打不开安装向导)
  • 功能选择阶段(勾选组件后报错)
  • 实例配置阶段(命名实例或默认实例设置异常)
  • 数据库引擎配置阶段(身份验证模式或管理员指定问题)
  • 最后安装阶段(进度条走到某个百分比突然回滚)

重要提示:安装目录不要用中文路径!这是90%安装失败的元凶,包括Program Files这样的系统目录也会因空格导致异常,建议使用C:\SQLServer这样的纯英文路径。

1.2 必备的预安装检查清单

在点击安装程序前,请先完成这些基础检查:

  1. 系统版本验证:运行winver确认是Windows 10 1607或更高版本(虽然Win11都满足)
  2. 磁盘空间要求:至少6GB可用空间(实测需要预留10GB更稳妥)
  3. 内存检查:4GB是微软最低要求,但开发环境建议8GB起步
  4. .NET Framework状态:通过dism /online /get-features查看.NET 3.5是否启用
# 快速检查系统组件的PowerShell命令 Get-WindowsFeature | Where-Object {$_.InstallState -eq "Installed"} | Select-Object Name

2. 高频失败场景与根治方案

2.1 安装程序启动即报错(错误代码0x84B10001)

典型表现为双击安装包后出现进度条,随后弹出"安装程序在启动期间遇到意外错误"。这通常由以下原因导致:

原因分析:

  • 安装介质损坏(尤其从非官方渠道下载的ISO)
  • 系统临时文件夹权限异常(安装程序需要写入%temp%)
  • 防病毒软件拦截(特别是实时扫描功能)

解决方案:

  1. 验证安装包完整性:

    certutil -hashfile SQLServer2019-x64-ENU.iso SHA256

    对比微软官网公布的哈希值(官网可查)

  2. 重置临时文件夹权限:

    icacls $env:temp /grant "Users:(OI)(CI)F" /t
  3. 创建专用安装账户(避免用域账户):

    • 本地新建管理员账户
    • 禁用UAC(运行msconfig调至"从不通知")
    • 暂时关闭Windows Defender实时保护

2.2 安装进度回滚(错误代码0x80070005)

当安装进度走到约80%时突然回退,日志中出现"Access is denied",这是最经典的权限问题。

深层原因:SQL Server安装时会自动创建以下服务账户:

  • NT SERVICE\MSSQLSERVER
  • NT SERVICE\SQLSERVERAGENT 这些账户需要对安装目录、注册表等有完全控制权。

根治步骤:

  1. 手动预创建服务账户:

    New-LocalUser -Name "SQLSvcAcct" -Password (ConvertTo-SecureString "YourPassword1!" -AsPlainText -Force) Add-LocalGroupMember -Group "Administrators" -Member "SQLSvcAcct"
  2. 设置文件夹权限(以默认实例为例):

    icacls "C:\Program Files\Microsoft SQL Server" /grant "SQLSvcAcct:(OI)(CI)F" icacls "C:\ProgramData\Microsoft\Microsoft SQL Server" /grant "SQLSvcAcct:(OI)(CI)F"
  3. 在安装向导的"服务账户"页面指定自定义账户

2.3 Analysis Services安装失败(错误代码0x80004005)

这是SQL Server 2016/2019的高频问题,主要发生在选择多维数据模式时。

关键解决点:

  1. 确保已安装Visual C++ 2017 Redistributable

  2. 关闭IPv6(控制面板→网络和共享中心→适配器设置)

  3. 修改注册表:

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters] "DisabledComponents"=dword:ffffffff
  4. 重启后重试安装

3. 高级排查工具的使用

3.1 分析安装日志的精髓

SQL Server安装日志默认位于:C:\Program Files\Microsoft SQL Server\<版本号>\Setup Bootstrap\Log\<日期时间>

关键日志文件:

  • Detail.txt(完整安装过程)
  • Summary.txt(错误代码汇总)
  • SystemConfigurationCheck_Report.htm(预检报告)

使用这个PowerShell命令快速定位错误:

Select-String -Path "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\*\Detail.txt" -Pattern "error|fail" -CaseSensitive

3.2 使用Process Monitor实时监控

微软官方工具Process Monitor可以捕捉安装过程的每个系统调用:

  1. 下载Process Monitor并运行
  2. 设置过滤器:
    • Process Name is "setup.exe"
    • Operation is "CreateFile" or "RegQueryValue"
  3. 开始捕获后运行SQL Server安装程序
  4. 在失败时停止捕获,筛选"Result"列包含"FAIL"的条目

4. 特殊场景解决方案

4.1 已存在残留实例的清理

当之前安装失败导致实例残留时,需要彻底清理:

  1. 使用官方卸载工具:

    C:\SQLServer2019\Setup100\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,RS,IS /INSTANCENAME=MSSQLSERVER
  2. 手动删除注册表项(谨慎操作):

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server
  3. 删除残留文件:

    Remove-Item -Path "C:\Program Files\Microsoft SQL Server" -Recurse -Force Remove-Item -Path "C:\ProgramData\Microsoft\Microsoft SQL Server" -Recurse -Force

4.2 域环境下的安装要点

在企业域环境中安装需特别注意:

  1. 服务账户必须使用gMSA(组托管服务账户)而非普通域账户
  2. 提前在AD中创建计算机对象的SPN:
    setspn -A MSSQLSvc/<server_name>.<domain>:1433 <domain_account> setspn -A MSSQLSvc/<server_name>.<domain> <domain_account>
  3. 确保安装账户在域控制器上有"读取"权限

5. 避坑经验总结

  1. 安装顺序很重要:先装SQL Server再装SSMS,反过来可能导致组件注册失败
  2. 版本兼容性检查:Windows 11 22H2需要SQL Server 2019 CU15及以上版本
  3. 杀毒软件白名单:将以下目录加入排除列表:
    • C:\Program Files\Microsoft SQL Server
    • C:\Windows\Microsoft.NET\assembly
  4. 多实例安装技巧:每个实例使用独立的服务账户,避免权限冲突
  5. Docker替代方案:如果反复失败可考虑使用官方SQL Server容器:
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong@Passw0rd" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest

最后分享一个诊断脚本,运行后生成环境检查报告:

# 保存为SQLPreCheck.ps1 $report = @() $report += "OS Version: $([Environment]::OSVersion.VersionString)" $report += "RAM: $((Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum /1GB)GB" $report += "Disk Space: $(Get-PSDrive C | Select-Object -ExpandProperty Free) bytes free" $report += "SQL Services: $(Get-Service -Name *SQL* | Where-Object {$_.Status -eq 'Running'} | Select-Object -ExpandProperty Name -Join ',')" $report | Out-File "C:\SQLInstall_EnvironmentReport.txt"

遇到安装失败时不要急着重试,先收集完整的错误信息和日志。大多数问题都能通过分析日志找到根本原因。如果实在无法解决,微软官方支持网站提供基于错误代码的精准解决方案查询。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进