删除 SQL Server 的部分安装

原始产品版本: SQL Server

原始 KB 数: 955404

Summary

SQL Server 安装或升级失败后,可能会留下一个非活动的 SQL Server 实例,该实例会阻止后续安装程序尝试,并可能导致安装程序错误 1639。 本文介绍如何使用安装程序日志和已安装的功能发现报告来识别和删除部分安装,而无需删除工作实例。 它还列出了在受支持的删除方法失败时要收集的诊断日志。

症状

SQL Server安装或升级失败后,后续尝试在同一台计算机上安装或升级同一SQL Server版本也可能失败。 此问题最常见于就地升级失败后,其中失败的安装程序操作会在计算机上留下一个部分安装或非活动的 SQL Server 实例。 无法重新安装SQL Server,因为安装程序会找到现有的部分实例。

你可能会看到下列一个或多个症状:

  • 实例显示在<InstanceName>.INACTIVE“已安装SQL Server功能发现报告中。
  • 安装程序报告实例 ID 已被非活动SQL Server实例使用。
  • 安装程序返回错误 1639,组件日志包含“MSINEWINSTANCE 需要未安装的新实例”。
  • Summary.txt 指示在重新运行安装程序之前卸载一个或多个功能。
  • 由于依赖项失败,功能失败,日志中的第一个故障指向不完整的实例或不可用的安装源。

原因

如果在安装过程中SQL Server安装程序失败,则部分安装的实例可以保留在计算机上。 SQL Server 安装程序并不总是回滚在失败之前所做的所有更改。 再次运行安装程序时,安装程序可以检测到未完全安装的实例。 这可以防止安装程序确定或创建新安装所需的实例配置。

最初的安装失败可能有很多原因。 例如,先决条件、安装源、Windows安装程序包或其他安装组件可能已失败。 删除部分安装无法解决导致失败的根本原因。 在重试安装程序之前,必须更正原始失败。

删除非活动SQL Server实例之前的先决条件

  • 在开始之前,请验证计算机上每个SQL Server实例的所有用户和系统数据库的可用备份。
  • 识别所有正在运行的实例并记录其实例名称、实例 ID、版本类型、版本和已安装的功能 ID,以便你可以将它们与非活动实例区分开来。
  • 将最新的SQL Server安装程序日志文件夹复制到安全位置。 默认路径为 %ProgramFiles%\Microsoft SQL Server\<VersionNumber>\Setup Bootstrap\Log\<Timestamp>。
  • 对创建非活动实例的同一SQL Server主版本使用安装媒体,除非 Summary.txt 显式将你定向到不同的媒体。
  • 从提升的命令提示符窗口运行命令。 在多实例服务器上,在每次删除命令之前验证实例名称、实例 ID 和功能列表。
  • 对于故障转移群集实例,请勿将群集节点视为独立实例。 使用SQL Server故障转移群集维护工作流,并查看受影响节点中的日志。

Important

请勿将SQL Server注册表项、服务、文件夹或文件作为常规清理方法删除。 手动注册表或文件系统清理可以删除共享组件或损坏工作实例。 如果受支持的删除方法失败,请收集日志并联系 Microsoft 支持。

删除未激活的 SQL Server 实例

若要删除非活动SQL Server实例,请按顺序完成以下步骤。 在非活动实例不再出现在发现报告中的任一步骤处停止。

  1. 查看安装结果并标识非活动实例

    从最近失败的安装尝试中打开 Summary.txt。 如果 Summary.txt 提供用于删除失败或非活动安装的命令,请使用该命令作为第一个删除方法。 记录建议的卸载命令、实例名称或实例 ID 以及命令中列出的功能。 查看 Detail.txt 第一个失败组件日志,确认失败是否属于非活动实例。

    %ProgramFiles%\Microsoft SQL Server\<VersionNumber>\Setup Bootstrap\Log\<Timestamp>\Summary.txt

  2. 运行 Setup 建议的卸载命令

    如果 Summary.txt 提供卸载命令,请使用该命令删除部分安装。

    打开提升的命令提示符,并更改为相应SQL Server安装介质上包含setup.exe的目录。

    例如:

    cd /d "<Drive>:\<InstallationMediaFolder>"
    

    然后运行由 Summary.txt. 提供的确切命令。

    例如:

    setup.exe /Q /ACTION=UNINSTALL /INSTANCEID=<InstanceId> /FEATURES=<FeatureList>
    

    此命令只是一个示例。 不要用来自其他安装或其他计算机的值替换实例 ID 或功能列表。 对失败的安装使用 Summary.txt 提供的值。

    Important

    在运行命令之前验证实例 ID。 在具有多个 SQL Server 实例的计算机上,针对错误的实例运行命令可能会删除正常工作的实例。

    有关详细信息,请参阅卸载SQL Server的现有实例(安装程序)。

  3. 生成已安装的功能发现报告

    从相应的安装介质启动 SQL Server 安装中心。 选择“工具>已安装的 SQL Server 功能发现报告”。 查看 报告 并确定部分安装是否仍列为 <InstanceName>.INACTIVE。

    例如:

    MSSQLSERVER.INACTIVE
    

    如果不再列出非活动实例,请验证正常工作的 SQL Server 实例及其预期功能是否仍然存在。 然后,可以继续执行最初的 Setup 失败的故障排除步骤,然后再重试安装。

    如果在运行由 Summary.txt提供的卸载命令后仍列出非活动实例,请继续执行下一步。 使用发现 XML 标识与非活动实例关联的Windows Installer 产品,并仅删除这些已验证的产品。

  4. 删除非活动实例的剩余Windows安装程序产品

    如果发现报告在运行 Summary.txt 中的卸载命令后仍然列出非活动实例,请找到并打开 discovery XML。 标识与非活动实例关联的条目,并记录每个适用功能的 ProductCode。 在删除产品之前,请验证 ProductCode 产品是否属于非活动实例,而不是工作中的 SQL Server 实例或共享组件。

    ProductCode="{<ProductCodeGuid>}"

    针对每个已验证的产品代码,在提升的命令提示符中运行以下命令:

    msiexec.exe /x {<ProductCodeGuid>}
    

    对每个ProductCode重复该命令。

    Caution

    仅删除与非活动实例关联的ProductCode条目。 不要仅仅因为它们的显示名称包含 SQL Server 就批量卸载产品。 计算机可以包含工作SQL Server实例所需的产品和共享组件。

  5. 重试 Setup 之前,请确认已删除

    • 重新生成已安装SQL Server功能发现报告。
    • 确认不再列出非活动实例。
    • 确认所有工作实例及其预期功能仍被列出。
    • 仅以辅助检查的形式查看 程序和功能 ;不要单独使用产品名称来决定要删除的内容。
    • 如果删除操作要求这样做,请重新启动计算机。 然后从有效的本地或可稳定访问的安装介质重新运行原始安装或升级。

排查常见卸载情况和安装程序错误

Scenario 你可能看到的内容 建议的操作
非活动实例阻止设置 发现报告显示 <InstanceName>.INACTIVE,或安装程序表示实例 ID 已在使用。 按照“删除非活动 SQL Server 实例”部分进行操作。 使用来自 Summary.txt 的卸载命令,然后仅删除属于非活动实例的经 ProductCode 验证的条目。
错误 1639 / MSINEWINSTANCE 组件日志指出,指定实例已安装,因此需要一个新实例 MSINEWINSTANCE。 将产品或转换与未激活实例相关联。 不要把“无效命令行”当作证明用户输入的设置语法是唯一原因的依据。
依赖项失败,出现错误 53 或找不到网络路径 Summary.txt 报告依赖项故障,组件日志报告源或网络路径不可用。 恢复对所需源的访问权限或使用有效的本地媒体。 如果安装程序创建了非活动实例,则删除该实例。 仅在更正源问题后重试。
Windows Installer 缓存中缺少 MSI 或 MSP 修复、修补、升级或卸载需要某个找不到的 MSI/MSP,或者某个功能无法选择。 使用 Microsoft Learn 过程还原缺少Windows安装程序缓存文件。 请勿从另一台计算机复制文件,除非有文档记录的验证确认它是确切的必需包。
首先失败的是驱动程序或运行时包 第一个失败的包是 ODBC 驱动程序、OLE DB 驱动程序或 Visual C++ 运行时包。 根据其 MSI 日志和已安装的版本,通过其支持的安装程序工作流修复或卸载受影响的依赖项。 默认情况下不要删除所有驱动程序。
故障转移群集实例 失败的操作涉及 FCI 节点或群集实例。 在适用情况下,使用 SQL Server 安装程序的群集维护操作,例如 Remove node。 保留群集配置并从每个受影响的节点收集日志。
受支持的删除操作仍然失败 Summary.txt卸载命令和经验证的ProductCode删除也失败,或者非活动条目仍然保留。 停止手动清理。 保留安装程序日志、发现报告、MSI 日志和系统配置快照,并联系Microsoft 支持部门。

何时停止卸载并收集日志

如果上述任何条件适用,请停止删除尝试,并在联系Microsoft支持之前收集诊断日志和实例信息。

  • 无法可靠地将 ProductCode 映射到非活动实例。
  • 计算机托管其他工作SQL Server实例或共享功能,建议的删除可能会影响它们。
  • 非活动实例属于故障转移群集,正常的群集维护操作失败。
  • 卸载命令重复失败,Windows安装程序报告缺少源文件,或 msiexec 删除失败。
  • 剩余选项需要手动删除注册表项、服务、安装程序缓存文件或SQL Server文件夹。

收集SQL Server诊断日志和实例信息

在对计算机进行其他更改之前收集以下信息:

注意

SQL LogScout 是诊断收集工具。 对于SQL Server安装程序或与安装相关的问题,请使用场景Installation/Setup,以便收集相关的安装日志和诊断信息。 有关详细信息,请参阅SQL Server本地和混合方案的故障排除和诊断工具。