MSSQLSERVER_912

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

详细信息

属性
产品名称 SQL Server
事件 ID 912
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 DB_RUNSCRIPTUPGRADE_STEP_FAILED
消息正文 数据库 '%.*ls' 的脚本级别升级失败,因为升级步骤 '%.*ls' 遇到错误 %d,状态为 %d,严重性 %d。 这是一种错误情况,可能会妨碍正常操作,且数据库将脱机。 如果在 '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 Errorlog
  2. 检查日志中错误 912 之前发生的错误,并专注于排查错误 912 消息中引用的错误。
  3. 对于Microsoft客户报告的一些常见情况,请参阅“等待数据库引擎恢复处理失败”和“912”和“3417”错误
  4. 在某些情况下,作为过程的一部分,可能需要使用 跟踪标志 902 启动 SQL Server 服务(请参阅以下步骤)。 使用 T902 启动服务后,服务可以在启动期间跳过升级脚本的执行。 这样,就有机会调查和修复基础问题。
  5. 解决该问题后,请务必删除跟踪标志,以便安装过程可以重启升级脚本执行阶段。

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

使用 Configuration Manager

  1. 启动“SQL Server 配置管理器”。
  2. 在 SQL Server Services 中选择 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