MSSQLSERVER_912

适用于: SQL Server 2019 (15.x) 及更高版本 - 仅限 Windows

详细信息

Attribute
产品名称 SQL Server
事件 ID 912
事件源 MSSQLSERVER
组件 SQLEngine
符号名称 DB_RUNSCRIPTUPGRADE_STEP_FAILED
消息正文 由于升级步骤 '%.*ls' 遇到错误 %d (状态 %d,严重性 %d),因此数据库 '%.*ls' 的脚本级别升级失败。 这是一种错误情况,可能会妨碍正常操作,且数据库将脱机。 如果在 'master' 数据库升级过程中发生该错误,将阻止整个 SQL Server 实例启动。 请在以前的错误日志条目中检查相关错误,采取相应的更正措施,然后重新启动数据库,以便完成脚本升级步骤。

说明

错误 912 指示无法执行数据库脚本,并将数据库 () 升级到服务器所需的最新级别。 这是一个一般错误消息,其中包含对失败的升级脚本的引用,以及失败的脚本遇到的错误。

升级 SQL Server 或应用累积更新时,最初只会升级二进制文件。 数据库及其对象保持未修改状态。 将二进制文件替换为新版本且服务首次重启后,将启动数据库升级。 要执行的升级脚本位于 C:\Program Files\Microsoft SQL Server\MSSQLXX.YYYY\MSSQL\Install 下。

如果升级过程遇到脚本级升级错误(错误 912),则可能会引发其他错误。 例如,以下错误可能会伴随错误 912,有助于进一步解释故障:

Error: 1101, Severity: 17, State: 1.
Could not allocate a new page for database 'tempdb' because of insufficient disk space in filegroup 'PRIMARY'. Create the necessary space by dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'xxx.sql' encountered error <Error Number>, state <Error State>, severity <Error Severity>. 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.

通常,当安装过程失败时,用户可能会在 GUI 中看到以下错误,前提是使用向导手动完成安装。 请记住,此错误可能会引发各种安装问题。 但在任何情况下,它都会指示你检查SQL Server错误日志以获取详细信息。

Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.

GUI 中的升级失败

用户操作

若要查找问题的原因,请执行以下步骤:

  1. 找到并打开SQL Server错误日志
  2. 检查日志中紧接在错误 912 之前发生的错误,并重点排查错误 912 消息中引用的错误。
  3. 对于 Microsoft 客户报告的一些常见方案,请参阅 “等待数据库引擎恢复句柄失败”和“912”和“3417”错误
  4. 在某些情况下,作为过程的一部分,可能需要使用跟踪标志 902 启动SQL Server服务 (请参阅下面的步骤) 。 使用 T902 启动服务允许服务在启动期间跳过升级脚本的执行。 这样,你就有机会调查并解决根本问题。
  5. 解决问题后,请务必删除跟踪标志,以便安装过程可以重启升级脚本执行阶段。

使用跟踪标志 902 启动 SQL Server 的步骤

使用 Configuration Manager

  1. 启动“SQL Server 配置管理器”。
  2. 在 SQL Server 服务中选择 SQL Server 实例。
  3. 右键单击该实例,然后选择“属性”。
  4. 选择“启动参数”选项卡 。
  5. 使用“指定启动参数”字段添加跟踪标志。 键入“-T902” (不带引号) ,然后单击“ 添加”。
  6. 选择“确定”并关闭实例属性。
  7. 启动 SQL Server 服务。

有关如何配置启动选项的详细信息,请参阅 SQL Configuration Manager 服务 - 配置服务器启动选项

注意

解决问题后,请务必从配置中删除 -T902。

使用 sqlservr.exe 的命令提示符

  1. 使用管理权限打开命令提示符,将目录更改为 SQL Server Binn 目录,例如 C:\Program Files\Microsoft SQL Server\MSSQLXX.YYYY\MSSQL\Binn。

  2. 执行 sqlservr.exe -s <instance> -T902

    默认实例:

    cd \Program Files\Microsoft SQL Server\MSSQL<version>\MSSQL\Binn
    sqlservr.exe -s MSSQLSERVER  -T902
    

    命名实例,其中“sql2016”是实例名称的示例:

    cd \Program Files\Microsoft SQL Server\MSSQL<version>.<instance name>\MSSQL\Binn
    sqlservr.exe -s sql2016  -T902
    
  3. 若要在完成后停止实例,请按 CTRL+C,然后按 Y

使用 net start 的命令提示符

默认实例:

NET START MSSQLSERVER /T902 

命名实例:

NET START MSSQL$INSTANCENAME  /T902