拓冰建站拓冰建站
首页 / 资讯中心 / 正文

SQL Server 2019重装失败?彻底清理残留与错误排查实操

你是不是也遇到过这种情况机器上之前装过SQL Server 2019后来因为换版本、C盘爆满、或者手滑点了个错误组件就卸载了想重装。结果setup.exe双击下去进度条走了一截忽然弹出一个红叉要么直接说“已有实例存在”要么卡在“配置数据库引擎服务”半天然后回滚再不然就是一堆看不懂的注册表残留报错。我处理过不少这种“SQL Server 2019重新安装失败”的案例今天把这套排查和补救流程完整写下来给正在和安装程序搏斗的朋友一个能直接照着操作的路线。SQL Server安装最让人头疼的一点是它不是一个单个程序而是一整套组件的集合。卸载的时候只删了主程序、不清理配套项、不处理服务、不碰注册表第二次安装就大概率翻车。下面我会按照“先判断原因、再彻底清理、然后读日志定位、逐个击破典型错误、最后以正确姿势重装”这个顺序来写每个环节都会给你具体到路径和命令的操作希望能帮你把这个问题一次性解决掉。1. 重新安装比首次安装更容易翻车先搞清楚失败根源1.1 SQL Server不是一个程序是一堆组件很多人以为卸载SQL Server就像卸载QQ一样控制面板里点一下“卸载”就干净了这是误解。SQL Server 2019安装的时候会在系统里铺开十几样东西数据库引擎、SQL Server Agent、Reporting Services、Analysis Services、Integration Services、Master Data Services、Data Quality Services、客户端工具连接组件、管理工具、安装引导文件Setup Support Files等。控制面板的“程序和功能”里列出来的只是这些组件的入口卸载主实例时它们不一定全被带走。重新安装失败的典型案例几乎都是同一个底层逻辑安装程序在“功能选择”和“实例配置”阶段会去检查系统里是否已经存在同名组件或同名实例。只要发现半残留的服务、注册表主键、文件目录它就会认为“你已经装过了”或者“上次安装没完成”然后拒绝继续或者进入莫名其妙的回滚。所以处理重装失败核心不是研究setup.exe本身而是要把上一轮的痕迹清干净。1.2 高频失败原因与报错现象对照先别急着动手清理第一步是判断你遇到的失败属于哪一类。根据我遇到的案例重新安装失败基本集中在下面几种情况失败现象最常见的根本原因安装规则检查提示“Restart Computer”失败系统存在挂起的文件重命名操作注册表PendingFileRenameOperations未清空提示“指定的实例已存在”或“功能状态不支持”上次卸载不彻底实例ID或组件注册项残留卡在“数据库引擎服务”启动阶段然后回滚服务账号权限、端口被占、数据目录残留导致服务起不来安装到“Setup Support Files”阶段报错安装引导文件损坏、Windows Installer缓存异常、杀毒软件锁文件进度条走一半直接Error 0x80070005权限不足setup没有以管理员身份运行报0x851A001A错误SQL Server服务无法启动常见于端口冲突或系统服务账户异常这张表的作用不是让你背错误码而是让你明确思路遇到问题先看报错发生在“安装的哪个阶段”。排查的目标就是确定这个阶段到底卡在了什么系统资源上。1.3 动手清理前先判断“该走哪条路”我见过不少人一遇到重装失败二话不说就跑去注册表里乱删删完反而把系统搞得更乱。正确做法是先回答三个问题上一次安装到底成功过没有如果成功过也正常用过后来才卸载那问题基本是“残留”如果上一次安装本身就失败了中途回滚过那问题可能是“回滚程序自己也烂在半路”。控制面板里现在还能不能看到SQL Server相关条目如果能优先用正常方式卸载不要跳过。系统里有没有你的重要数据库文件如果C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data下面还有你辛苦建的库清理之前一定要先备份别为了重装把数据一起带走。这三个问题确认完再根据情况选路线能正常卸载就先卸载卸载完清理文件、服务、注册表卸载程序本身报错的才需要手动逐项清理。下面一章按这个思路展开。2. 手工清理残留文件、服务、注册表三件套2.1 先走正规卸载流程别急着动刀如果你在“设置-应用-已安装的应用”里还能看到SQL Server 2019相关条目先把它们按顺序卸载。注意顺序先卸载管理工具和客户端组件再卸载Integration Services、Reporting Services、Analysis Services等辅助功能最后卸载数据库引擎主实例。因为主实例可能是很多组件的依赖先卸依赖项卸载过程才干净。卸载时如果程序问你“是否删除数据”选择删除前提是你已经备份过卸载完成后系统提示重启务必重启不要嫌麻烦直接装。这一步后面很多人会忽略结果新安装程序启动时还有一些DLL被旧进程占用安装自然失败。经验之谈正规卸载重启能解决大约三成的问题因为Windows Installer只有在你重启之后才会真正释放文件锁。如果控制面板已经看不到SQL Server条目或者卸载到一半报错那才进入手工清理环节。接下来每一步都以管理员身份操作。2.2 删除安装目录和数据目录SQL Server 2019的默认安装目录和日志目录分布在这几个位置C:\Program Files\Microsoft SQL Server\主程序、实例数据目录C:\Program Files (x86)\Microsoft SQL Server\客户端工具、部分共享组件C:\ProgramData\Microsoft SQL Server\公共配置、备份目录C:\Windows\Temp\SQL_*安装过程产生的临时文件删除之前建议先把“Microsoft SQL Server”文件夹改名而不是直接删除。比如把C:\Program Files\Microsoft SQL Server改成C:\Program Files\Microsoft SQL Server.old然后重新安装。这样做有两个好处一是万一装失败还能退回旧状态二是如果新装成功、确认没问题再删旧文件夹不迟。我自己的习惯是先剪切到另一个盘观察一个礼拜再彻底删除反正也不占多大地方。删除数据目录之前一定看清楚里面有没有.mdf、.ldf、.bak文件这些是数据库本体和备份删了就真的没了。这也是为什么我在上一小节反复强调备份的原因。2.3 清理注册表注意备份注意主键注册表是重装失败的“重灾区”。SQL Server在注册表里留下的痕迹比文件系统还多而且卸载程序经常清不干净。我的建议是不要试图把注册表里所有SQL相关键都翻出来删掉那样工作量大还容易误删只需要处理安装程序会检查的那几个关键主键。重点看这几个位置运行regedit以管理员身份打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL ServerHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServerHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager第一个主键是SQL Server 2019所有实例和组件的总注册表入口里面会看到类似MSSQL15.MSSQLSERVER这样的子键15表示SQL Server 2019MSSQLSERVER是默认实例名。第二个主键存放默认实例的参数配置。删除前先右键导出这两个键做备份导出.reg文件存到别的地方然后删除。安装程序在检查“实例是否已存在”时主要是读这两个位置。第三个位置是“程序和功能”列表的来源卸载完可能还有残留条目找到SQL Server对应项右键删除即可。第四个位置涉及重装时经常会撞上的“挂起重启检测”我放到第4章单独讲这里先不展开。提示注册表操作前一定要先导出备份哪怕只是删一个键。SQL Server的注册表项之间有依赖关系备份文件可以随时双击恢复。2.4 处理残留服务文件删完、注册表清完还要检查Windows服务里有没有残留的SQL Server相关服务。这些服务通常在控制面板卸载时就已经被标记为删除但由于进程还没退出会留下一个“僵尸服务”条目。管理员身份打开命令提示符先用下面的命令列出所有带SQL的服务sc query | findstr /i sql如果看到类似MSSQLSERVER、SQLSERVERAGENT、SQLBrowser、MSSQLFDLauncher、MsDtsServer150、ReportServer这样的名称说明服务还在用sc delete清理sc delete MSSQLSERVER sc delete MSSQL$SQLEXPRESS sc delete SQLSERVERAGENT sc delete SQLBrowser sc delete MsDtsServer150 sc delete ReportServer如果提示“服务已被标记为删除”说明它在系统注销表中还存在重启一次系统就会消失。如果提示找不到服务名可能实际名称有差异先在“服务”管理工具里查准确名称。这里补充一个容易被忽略的点有时候安装程序是在“安装某个功能组件”的中途失败回滚的会导致系统服务注册表里留下一个路径异常的条目服务管理工具里能看到但启动不了。这种条目不删重装时很容易被当作“已存在的服务”而中止安装。遇到这种情况同样可以用sc delete把对应服务删掉。3. 靠日志定位问题让安装程序自己告诉你答案3.1 Setup Bootstrap日志在哪看清理完上一章的所有项目理论上你已经能把八成的重装失败修复了。但如果清理完再装还是失败那就不要再靠“猜”了养成读日志的习惯。SQL Server安装程序每执行一次操作都会把过程完整写入日志目录即使安装失败回滚日志也会保留。日志目录默认在C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\这个目录下有几类文件最外面的是Summary.txt是每次安装的执行摘要级别日志里面还有按时间戳命名的子文件夹比如20250415_093000代表一次安装会话的详细日志。注意是“150”这个路径这个数字就是版本主代号SQL Server 2019对应1502017是1402016是130。如果你装的是2019看到140反而说明你运行的介质版本不对。3.2 如何从Summary.txt和系统检查报告里找线索定位失败的顺序我建议这样先打开Summary.txt翻到最末尾看“Overall summary”段落。它会告诉你“Setup ended with code 0x……”这样的信息以及是哪一个具体环节失败比如“FAILED: Install_DatabaseServicesAction”。然后打开时间戳文件夹里的SystemConfigurationCheck_Report.htm这个文件是安装规则检查报告浏览器打开后红叉或黄色警告的规则项就是安装程序认为不满足条件的点。比如“Restart Computer”这项标红基本就是挂起重启状态比如“SQL Server 2005/2008/2012/2014/2016/2017/2019 existing instance”标红说明还有实例残留没清干净。最后再去时间戳文件夹里找SqlSetup.log这类详细日志搜索“error”或“Exception”关键词。这里给个套用思路如果你看到错误信息里出现“The specified service already exists”就是服务没删干净出现“Access is denied”就是权限问题出现“The process cannot access the file because it is being used by another process”就是有进程占用了文件多半要重启或者退出杀毒。3.3 常见错误码与修复方向日志里和安装报错弹窗里的错误码很多人一看就慌其实大部分都是可以映射到具体修复方向的。这里整理一个表中常用到的错误码或特征文本常见阶段优先排查方向0x851A001A数据库引擎配置阶段服务启动失败检查端口占用、服务账户、数据目录0x84B10001功能配置阶段组件状态异常清理对应功能的服务和注册表0x80070005任意阶段权限不足用管理员身份运行setup0x80070002任意阶段安装文件缺失或被安全软件隔离检查介质完整性Restart Computer规则失败规则检查阶段清理PendingFileRenameOperations并重启The specified instance already exists实例配置阶段注册表和Services残留未清干净我的习惯是遇到错误码先不要背数字而是去日志里搜“FAILED”或“Exception”看失败发生在哪个Action。Action名称本身就很有迷惑性比如Install_DatabaseServicesAction说明是数据库引擎部分出问题Install_SupportFilesAction说明是安装引导文件。知道了具体动作才谈得上对症下药。提示Windows事件查看器eventvwr.msc里应用程序日志下也能找到SQL Server安装相关的错误事件尤其是服务启动失败时系统事件的描述往往比安装日志更直白。4. 高频报错逐个击破4.1 挂起的重启状态PendingFileRenameOperations这个坑出现频率极高而且特别隐蔽。Windows安装某些软件后如果有些文件需要重启后才能替换系统会在注册表里记一笔“待命”操作下次安装别的软件时安装程序会检测到还有文件没替换完认为系统状态不稳定直接拒绝安装。SQL Server的“规则检查”里对应就是“Restart Computer”这一项标红。检查这个状态在注册表里看这个位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager右侧有一个多字符串值叫PendingFileRenameOperations如果它存在且有内容就说明系统里有挂起的文件重命名操作。最简单的处理办法是重启系统如果重启后这个值还在说明有程序反复标记它可以把这个值删掉再重装。注意这个值不是SQL Server专属的可能被其他软件写入。删除之前先右键导出备份。删除后新一批文件替换操作不会被立即执行但对重装SQL Server没有负面影响。这条经验我自己用过很多次每次都能解决“明明刚重启过却还提示需要重启”的诡异问题。4.2 数据库引擎服务启动失败SQL Server安装进度条走到“数据库引擎服务”附近时失败通常是安装程序正在尝试启动MSSQLSERVER服务却没起来。这种情况下日志里往往是0x851A001A弹窗文本可能包含“Wait on the Database Engine recovery handle failed”。按这个顺序排查确认端口1433是否被别的进程占用。管理员命令行输入netstat -ano | findstr :1433如果有结果看看占用进程是什么。经常是之前装的旧版本SQL Server、MySQL、或者某个开发工具自带的服务。如果确认无用停掉那个进程如果那个服务是必需的安装SQL Server时把端口改成1434或别的静态端口。确认服务账户权限。安装时建议选择“NT Service\MSSQLSERVER”这种虚拟账户不要图省事选本地系统账户也不要用普通用户账户。如果之前配置了自定义账户且密码过期服务就启动不了。检查数据目录是否可写。安装程序会在数据目录里创建系统数据库文件如果该目录权限不对服务拉不起来。如果系统检测到C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data下有旧文件比如上次失败回滚留下的半成品也可能起不来。清理干净再重新安装一般能解决。如果只是重装场景最常见的就是端口被占用和目录残留这两点提前处理好数据库引擎基本能正常起来。4.3 1433端口和命名实例冲突端口问题值得单独拎出来讲因为它属于“配置文件全对但还是装不上”的代表。SQL Server默认监听1433端口如果你机器上还运行着别的数据库实例比如老版本的SQL Server Express或者别的软件强行占了1433安装时就容易失败。处理方法有两个方向一是停掉占用端口的服务腾出1433二是在安装时给SQL Server指定一个不同的静态端口。安装到“实例配置”那一步点击“数据引擎配置”选项卡切到“服务器配置”或后面专门有“端口”设置的步骤把端口改掉。命名实例冲突则是另一回事如果你上次装的是默认实例MSSQLSERVER重装时依然选择默认实例安装程序会检测到残留的实例ID而报“实例已存在”。这种情况下清理干净残留或者干脆这次换成命名实例比如SQL2019REINSTALL都能绕过去。但注意命名实例不能解决所有问题如果注册表里实在清不干净该清理还是得清理。4.4 杀毒软件、防火墙与.NET环境干扰这个问题在个人电脑上尤其常见。Intel的核显驱动偶尔都会因为杀毒软件的文件锁导致黑屏更别说SQL Server这种动辄几千个文件的大组件安装。安装前直接退出第三方杀毒软件Windows自带的Defender如果不方便完全退出至少要把“实时保护”临时关掉并且在“排除项”里把C:\Program Files\Microsoft SQL Server以及你手动指定的SQL数据目录加入白名单避免安装过程中文件被拦截。防火墙方面Windows防火墙默认不会阻断安装但如果你装了第三方防火墙软件安装时弹窗“是否允许SQL Server服务监听网络”一定要选允许否则数据库引擎服务启动时探测端口失败又会绕回报错。.NET Framework是另一个隐蔽点。SQL Server 2019需要.NET Framework 4.7.2Win10/11系统一般自带但如果你装过精简版系统或者曾经手动操作过.NET组件可能导致.NET安装状态异常。安装前可以在“启用或关闭Windows功能”里确认相关.NET项是勾选状态或者在设置应用里把.NET Framework更新到最新。这个问题的典型特征是安装程序在“安装支持文件”阶段就报错错误码通常是0x80070002或0x80070005。5. 重新安装时的正确姿势少踩一次坑5.1 安装介质的完整性和版本匹配从源头避免问题重新安装用的ISO一定要保证完整。很多人下载SQL Server 2019的时候是从各种下载站或网盘拿的文件被分流、被改名甚至被植入过东西。建议从官方渠道或可信的镜像站下载下载后核对文件大小最好比对一下官方页面的SHA256校验值。我自己的习惯是解压ISO之后再安装而不是直接在资源管理器里双击setup因为解压过程能顺便验证压缩包完整性也避免Windows挂载ISO时的一些锁定问题。版本匹配也要注意你之前卸载的是Standard现在想装Developer或者反过来都算正常但如果你想用Enterprise版本的安装介质去“覆盖”之前Developer版本的残留就会触发组件版本不匹配的检查。遇到这种情况没有捷径还是得先清理再装。5.2 启动setup前必须做的几项检查经过前面几章的折腾你已经把环境处理得差不多了。在双击setup.exe之前我建议花五分钟把这个检查清单过一遍系统已重启一次且重启后没有挂起文件重命名操作检查PendingFileRenameOperations为空。控制面板里已经没有SQL Server相关条目。C:\Program Files\Microsoft SQL Server和ProgramData下没有SQL Server主目录或已改名。服务列表里没有SQL相关服务。软件中心/防火墙/杀毒软件已退出或已加入白名单。你以管理员身份运行setup.exe右键点击选择“以管理员身份运行”。其中最后一条很多人会忽略。双击setup时如果没有触发UAC提升或者你用的是受限制的本地账户后续所有写操作都可能失败。特别是在有UAC的Windows 10/11上安装程序必须从提权后的进程启动它后续派生的子进程才会有足够权限。这不是玄学是Windows安全的正常逻辑。5.3 安装过程中的关键选项建议到了安装向导这一步也有几个选项值得认真对待功能选择不用全选。日常使用勾选“数据库引擎服务”、“客户端工具连接”、“管理工具”基本够用。不要贪多因为每个功能都对应一堆服务和注册表以后卸载工作量也小。当然如果你明确需要SSIS、SSRS这些BI组件按需勾选。实例配置第一次重新安装建议用默认实例MSSQLSERVER。如果因为端口冲突想避开默认用命名实例也行。但要注意命名实例的默认端口是动态的以后写连接字符串时是“hostname\instancename”这样的格式。服务器配置服务账户一律选虚拟账户或“NT Service\SQLSERVERAGENT”这类托管服务账户不要指定一个会被密码策略锁定的本地用户。排序规则、数据目录等保持默认即可。安装完成后重启系统然后打开SQL Server Management Studio如果没装SSMS单独安装最新版本用Windows身份验证连接localhost测试。到这里如果一切顺利SQL Server 2019应该已经在干净环境里跑起来了。如果你把这套流程完整走完还没装上我个人的建议是别再纠结第三次重装先花点时间翻系统事件日志看看有没有更深层的系统组件损坏。如果确认系统环境已经一团糟与其继续跟setup搏斗不如花个把小时把系统恢复到一个正常的基准环境再装毕竟数据库这类基础软件底下垫着一套健康的操作系统比任何安装技巧都管用。最后再提醒一句遇到重装失败多数时候不是setup.exe不给你面子是上一个版本留下的作业还没交完。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门