排查常见的SQL Server累积更新安装问题
本文提供一般步骤,用于排查将累积更新 (CU) 或 Service Pack (SP) 应用到 Microsoft SQL Server 实例时可能会遇到的问题。 它还提供了有关如何解决以下错误消息或条件的信息:
Wait on Database Engine recovery handle failed
运行升级脚本时出现消息和错误 912 和 3417 。- 由于缺少 MSI 或 MSP 而发生的安装错误, (更新 Windows Installer 缓存中的) 文件。
The Database Engine system data directory in the registry is not valid
或the 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 之前将新功能更新到与程序实例相同的级别。
常规故障排除方法
按照以下步骤隔离错误:
- 从设置过程的“失败”屏幕中选择“详细信息”。
- 在 %programfiles%\Microsoft SQL Server\nnn\Setup Bootstrap\Log 文件夹中,检查“发现的产品功能”部分下的 Summary.txt,以确定列出的功能是否报告失败。 如果他们这样做,你可以专注于解决影响该功能的问题。
- 转到名为 yyyyMMdd_HHmmss (的子文件夹,例如 20220618_174947) ,该子文件夹对应于你关注的报告失败时间。 目标是根据需要检查特定于功能的文件、ERRORLOG 文件和 Details.txt 文件。
- 转到 \MSSQLSERVER 子文件夹,找到特定于失败的功能的日志文件。 例如, sql_engine_core_inst_Cpu64_1.log。 对于升级脚本失败,检查与升级失败时间对应的 SQLServer_ERRORLOG_date_time.txt 文件。
- 打开 Details.txt 日志文件,并在“失败”关键字 (keyword) 搜索。并非每个故障都被视为严重故障。
有关详细信息,请参阅查看和读取SQL Server安装程序日志文件。
在接下来的几个部分中,检查对应于你的情况的方案,然后按照相关的故障排除步骤进行操作。 如果没有匹配的方案,请在日志文件中查找更多指针。
错误 912 和 3417 和“等待数据库引擎恢复句柄失败”
T-SQL 升级脚本随每个SQL Server累积更新一起提供。 在将SQL Server二进制文件替换为最新版本后运行它们。 如果这些 T-SQL 脚本出于某种原因未运行,安装程序将报告“等待数据库引擎恢复句柄失败”错误。 安装程序在最新的SQL Server错误日志中记录错误 912 和 3417。 错误 912 和 3417 分别与数据库脚本升级失败和恢复 master
失败相关联。 错误 912 之前的消息通常提供有关运行升级脚本时失败的根本原因的信息。
可能会与 912 和 3417 一起引发各种错误。 有关常见方案和相关解决方案的摘要的详细信息,请参阅 对应用更新时升级脚本失败进行故障排除。
Windows 缓存中缺少安装程序文件而导致的安装错误
使用 Windows Installer 技术进行安装过程的应用程序(如SQL Server)会将关键文件存储在 Windows Installer 缓存中。 默认安装程序缓存位置为 C:\Windows\Installer。 卸载和更新应用程序需要这些文件。 它们对那台计算机是唯一的。 如果这些文件被意外删除或以其他方式泄露,则汇报依赖于这些文件的应用程序将不起作用。 若要解决此问题,请使用 还原缺少的 Windows Installer 缓存文件中所述的下列方法之一:
- 修复SQL Server安装。
- 使用 FixMissingMSI 工具。
- 使用 FindSQLInstalls.vbs 脚本。
- 手动还原文件。
- 从系统状态备份还原文件。
- 查看并实现 还原缺少的 Windows Installer 缓存文件中所述的过程。
由于注册表中的数据或日志位置不正确,安装程序失败
安装 CU 或 SP 时,如果默认数据和日志文件夹无效,可能会收到类似于以下消息的错误:
“注册表中的用户数据目录无效。 验证实例配置单元下的 DefaultData 键指向有效目录。”
“注册表中的用户日志目录无效。 验证实例配置单元下的 DefaultLog 键指向有效目录。”
“安装SQL Server数据库引擎服务实例功能时出错。 注册表中的数据库引擎系统数据目录无效。”
若要解决此问题,请执行以下步骤:
- 使用 SQL Server Management Studio (SSMS) 连接到 SQL Server 实例。
- 在对象资源管理器中右键单击SQL Server实例,然后选择“属性>数据库设置”。
- 在“数据库默认位置”下,确保“数据和日志”中的文件夹正确。
- 在SQL Server 配置管理器,选择“SQL Server服务”,双击受影响的SQL Server服务,选择“高级”选项卡,并确保“数据路径”的值正确。 该值灰显,无法修改。 但是,如果要更正它,请在安装 SQL Server累积更新或 Service Pack 以修改 SQLDataRoot 注册表项时,按照错误中的方法 2 操作,指出注册表中的数据或日志目录无效。
- 重试 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.
其他信息
- 有关SQL Server版本和下载位置的当前可用更新的完整列表,请参阅确定版本、版本和更新级别 - SQL Server。
- 有关SQL Server版本的可支持性和维护时间线的详细信息,请参阅 Microsoft 产品生命周期页。
- 有关为不同版本的 SQL Server 提供服务模型的信息,请参阅 SQL Server 汇报 的增量服务模型和 SQL 2017 及更高版本的新式服务模型。
- 有关如何更新SQL Server的常规信息,请参阅安装SQL Server服务汇报。
- 有关SQL Server和其他产品的安全更新的信息,请参阅安全更新指南。
- 有关与 Microsoft 更新关联的标准术语的信息,请参阅 用于描述 Microsoft 软件更新的标准术语的说明。
- 若要解决在高度安全的环境中可能发生的安装问题,请参阅SQL Server安装失败(如果安装程序帐户没有特定用户权限)。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈