排查常见的SQL Server累积更新安装问题

本文提供一般步骤,用于排查将累积更新 (CU) 或 Service Pack (SP) 应用到 Microsoft SQL Server 实例时可能会遇到的问题。 它还提供了有关如何解决以下错误消息或条件的信息:

  • Wait on Database Engine recovery handle failed 运行升级脚本时出现消息和错误 9123417
  • 由于缺少 MSI 或 MSP 而发生的安装错误, (更新 Windows Installer 缓存中的) 文件。
  • The Database Engine system data directory in the registry is not validthe User Log directory in the registry is not valid 消息。
  • Network path was not found如果在Always On故障转移群集实例上禁用远程注册表服务或管理员共享, (FCI) 或Always On可用性组,则会收到其他错误消息。

累积更新和 Service Pack 安装信息

本部分提供有关 CU 和 SP 安装的信息。

  • 对于 Microsoft SQL Server 2016 及更早版本:

    • 在安装 CU 之前,请确保 SQL Server 实例处于该 CU 的正确 SP 级别。 例如,在对 SQL Server 2016 实例应用 SP2 之前,不能为 SQL 2016 SP2 应用 CU17。
    • 始终可以为给定的 SP 基线应用最新的 CU,而无需为该 Service Pack 应用以前的 CU。 例如,若要为 SQL Server 2016 SP2 实例应用 CU17,可以跳过将以前的更新应用到 CU14、CU15 和 CU16(如果未安装这些更新),并直接应用 CU17。
  • 对于 Microsoft SQL Server 2017 及更高版本,始终可以应用可用的最新 CU。 (SQL Server 2017 及更高版本不存在服务包。)

  • 在应用 CU 或 SP 之前,请确保正确安装了要更新的实例。 SQL Server程序文件和数据文件不能安装在以下位置:

    • 可移动磁盘驱动器。
    • 使用压缩的文件系统。
    • 系统文件所在的目录。
    • 故障转移群集实例上的共享驱动器。
  • 如果在向实例应用 CU 或 SP 后添加 数据库引擎功能 ,则应在应用任何新的 CU 或 SP 之前将新功能更新到与程序实例相同的级别。

常规故障排除方法

按照以下步骤隔离错误:

  1. 从设置过程的“失败”屏幕中选择“详细信息”。
  2. %programfiles%\Microsoft SQL Server\nnn\Setup Bootstrap\Log 文件夹中,检查“发现的产品功能”部分下的 Summary.txt,以确定列出的功能是否报告失败。 如果他们这样做,你可以专注于解决影响该功能的问题。
  3. 转到名为 yyyyMMdd_HHmmss (的子文件夹,例如 20220618_174947) ,该子文件夹对应于你关注的报告失败时间。 目标是根据需要检查特定于功能的文件、ERRORLOG 文件和 Details.txt 文件。
  4. 转到 \MSSQLSERVER 子文件夹,找到特定于失败的功能的日志文件。 例如, sql_engine_core_inst_Cpu64_1.log。 对于升级脚本失败,检查与升级失败时间对应的 SQLServer_ERRORLOG_date_time.txt 文件。
  5. 打开 Details.txt 日志文件,并在“失败”关键字 (keyword) 搜索。并非每个故障都被视为严重故障。

有关详细信息,请参阅查看和读取SQL Server安装程序日志文件

在接下来的几个部分中,检查对应于你的情况的方案,然后按照相关的故障排除步骤进行操作。 如果没有匹配的方案,请在日志文件中查找更多指针。

错误 912 和 3417 和“等待数据库引擎恢复句柄失败”

T-SQL 升级脚本随每个SQL Server累积更新一起提供。 在将SQL Server二进制文件替换为最新版本后运行它们。 如果这些 T-SQL 脚本出于某种原因未运行,安装程序将报告“等待数据库引擎恢复句柄失败”错误。 安装程序在最新的SQL Server错误日志中记录错误 9123417。 错误 912 和 3417 分别与数据库脚本升级失败和恢复 master 失败相关联。 错误 912 之前的消息通常提供有关运行升级脚本时失败的根本原因的信息。

可能会与 912 和 3417 一起引发各种错误。 有关常见方案和相关解决方案的摘要的详细信息,请参阅 对应用更新时升级脚本失败进行故障排除

Windows 缓存中缺少安装程序文件而导致的安装错误

使用 Windows Installer 技术进行安装过程的应用程序(如SQL Server)会将关键文件存储在 Windows Installer 缓存中。 默认安装程序缓存位置为 C:\Windows\Installer。 卸载和更新应用程序需要这些文件。 它们对那台计算机是唯一的。 如果这些文件被意外删除或以其他方式泄露,则汇报依赖于这些文件的应用程序将不起作用。 若要解决此问题,请使用 还原缺少的 Windows Installer 缓存文件中所述的下列方法之一:

由于注册表中的数据或日志位置不正确,安装程序失败

安装 CU 或 SP 时,如果默认数据和日志文件夹无效,可能会收到类似于以下消息的错误:

“注册表中的用户数据目录无效。 验证实例配置单元下的 DefaultData 键指向有效目录。”

“注册表中的用户日志目录无效。 验证实例配置单元下的 DefaultLog 键指向有效目录。”

“安装SQL Server数据库引擎服务实例功能时出错。 注册表中的数据库引擎系统数据目录无效。”

若要解决此问题,请执行以下步骤:

  1. 使用 SQL Server Management Studio (SSMS) 连接到 SQL Server 实例。
  2. 在对象资源管理器中右键单击SQL Server实例然后选择“属性>数据库设置”。
  3. “数据库默认位置”下,确保“数据和日志”中的文件夹正确。
  4. 在SQL Server 配置管理器,选择“SQL Server服务”,双击受影响的SQL Server服务,选择“高级”选项卡,并确保“数据路径”的值正确。 该值灰显,无法修改。 但是,如果要更正它,请在安装 SQL Server累积更新或 Service Pack 以修改 SQLDataRoot 注册表项时,按照错误中的方法 2 操作,指出注册表中的数据或日志目录无效。
  5. 重试 CU 或 SP 安装。

(WSFC) 节点配置错误的 Windows Server 故障转移群集

若要顺利运行和维护SQL Server故障转移群集实例 (FCI) ,请遵循安装故障转移群集故障转移群集实例管理 & 维护中所述的最佳做法。 如果在应用 CU 或 SP 时遇到错误,检查以下条件:

  • 确保 远程注册表 服务处于活动状态并在 WSFC 群集的所有节点上运行。
  • 如果 SQL Server 的服务帐户不是 Windows 群集中的管理员,请确保在所有节点上启用管理共享 (C$ 等) 。 有关详细信息,请参阅 缺少管理共享时可能出现的问题概述。 如果未正确配置这些共享,在尝试安装 CU 或 SP 时,你可能会注意到以下一个或多个症状:
    • 更新需要很长时间才能运行或未响应。 安装日志不会显示任何进度。
    • 安装日志包含如下消息:

      The network path was not found. System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.

其他信息