SQL Server 升级失败并返回错误 4860

本文可帮助你排查安装 Microsoft SQL Server 累积更新(CU)或 Service Pack(SP)时发生的错误 4860。 运行数据库升级脚本时发生错误。

现象

安装用于 SQL Server 的 CU 或 SP 时,安装程序将报告以下错误:

等待数据库引擎恢复句柄失败。 有关可能的原因,请查看 SQL Server 错误日志。

检查 SQL Server 错误日志时,会看到如下所示的错误消息:

Error: 4860, Severity: 16, State: 1.
Cannot bulk load. The file "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Install\SqlTraceCollect.dtsx"<Filename> does not exist.
Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'msdb110_upgrade.sql' encountered error 4860, state 1, severity 16. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Error: 3417, Severity: 21, State: 3.
Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it.For more information about how to rebuild the master database, see SQL Server Books Online.

原因

如果在应用 CU 或 SP 时大容量加载操作失败,则会发生此错误。 由于缺少支持安装文件,因此会发生此错误。 有关在 CU 或 SP 安装过程中运行的数据库升级脚本的详细信息,请参阅 在应用更新时排查升级脚本失败问题。

例如,如果安装程序找不到 SqlTraceCollect.dtsx,则会报告类似于以下条目的错误:

Error: 4860, Severity: 16, State: 1.
Cannot bulk load. The file "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Install\SqlTraceCollect.dtsx"

解决方法

若要解决 4860 错误,请执行以下步骤:

  1. 将 SQL Server 与跟踪标志 (TF) 902 一起启动。 有关详细信息,请参阅 使用跟踪标志 902 启动 SQL 的步骤。

  2. 根据修复失败的 SQL Server 安装中所述 的过程修复 SQL Server 安装。 或者,可以从与 SQL Server 安装相同的其他系统复制缺少的文件,并在安装失败的计算机上还原该文件。

  3. 从启动参数中删除 TF 902,然后重启 SQL Server。 SQL Server 在不使用 TF 902 启动后,升级脚本将再次运行。

    • 如果升级脚本成功完成,SP 或 CU 升级已完成。 可以检查 SQL Server 错误日志和启动文件夹以验证已完成的安装。
    • 如果升级脚本再次失败,请检查 SQL Server 错误日志中是否有其他错误条目,然后排查新错误。