SQL Server 启动服务时特定于服务的错误 17113

适用于: SQL Server

症状

在 Microsoft SQL Server 中master,数据库记录所有系统级信息。 该master数据库还记录了所有其他数据库的存在、这些数据库文件的位置以及SQL Server的初始化信息。 因此,如果数据库不可用,masterSQL Server无法启动。

在这种情况下,尝试启动SQL Server时,SQL Server服务不会启动,并且你会收到以下错误消息之一,具体取决于你尝试启动服务的方式:

  • 使用 服务 小程序:

    Windows 无法在本地计算机上启动SQL Server (MSSQLSERVER) 。 有关详细信息,请查看系统事件日志。 如果这是非 Microsoft 服务,请与服务提供商联系,并参阅特定于服务的错误代码 17113。

  • 使用命令提示符:

    C:\\>NET START MSSQLSERVER  
    The SQL Server (MSSQLSERVER) service is starting.  
    The SQL Server (MSSQLSERVER) service could not be started.  
    A service specific error occurred: 17113.  
    More help is available by typing NET HELPMSG 3547.
    

解决方案

  1. 检查SQL Server错误日志,并验证原因是数据库不可master访问。 例如,你可能会看到如下所示的日志条目:

    <Datetime> Server      Error: 17113, Severity: 16, State: 1.  
    <Datetime> Server      Error 2(The system cannot find the file specified.) occurred while opening file
                           'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\master.mdf' to obtain configuration information at startup.
                           An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary.
    
  2. 验证 master.mdf 文件的位置。 如果路径不正确,请使用SQL Server 配置管理器或注册表编辑器修复路径。

    1. 使用 SQL Server 配置管理器

      依次选择“开始”、“所有程序”、“Microsoft SQL Server”、“配置工具”,然后选择“SQL Server 配置管理器”。

      注意

      由于 SQL Server 配置管理器 是 Microsoft 管理控制台程序的管理单元,而不是独立程序,因此SQL Server 配置管理器在较新版本的 Windows 中不会显示为应用程序。 若要在 Windows 11、10 或 8 中打开SQL Server 配置管理器,请针对你的 Windows 版本执行以下步骤。

      • Windows 10 和 11:

        1. 对于 SQL Server 2016 (13.x) ) ,选择“起始页”,输入 SQLServerManager13.msc (。 对于不同版本的SQL Server,请将 13 替换为相应的编号。
        2. 选择“SQLServerManager13.msc”打开Configuration Manager。 若要将Configuration Manager固定到起始页或任务栏,请右键单击“SQLServerManager13.msc”,然后选择“打开文件位置”。
        3. 在 Windows 文件资源管理器中,右键单击“SQLServerManager13.msc”,然后选择“固定到开始”菜单“固定到任务栏”。
      • Windows 8:
        按 Windows 徽标键+Q 打开“搜索”超级按钮。 在“应用”下,输入 SQLServerManager<version_number.msc> (例如 SQLServerManager13.msc) ,然后按 Enter。

      1. 在“SQL Server 配置管理器”中,选择“SQL Server服务”。

      2. 在右窗格中,右键单击SQL Server (<instance_name>) ,然后选择“属性”。

      3. 在“启动参数”选项卡上,在“现有参数”部分选择以 -d 开头的行。 当前值是可编辑的。 指定启动参数框。 修复路径以反映正确的值,选择“ 更新”,然后选择“ 确定 ”以保存更改。

      4. 重启SQL Server服务。

    2. 使用注册表编辑器

      1. 导航到 HKLM\Software\Microsoft\MicrosoftSQL Server\MSSQL{nn}.MyInstance SQL Server 实例的配置单元。

      2. 在 下MSSQLServer\Parameters找到 SQLArg0 值。

      3. 更改值以反映数据库的正确路径 master

      4. 重启SQL Server服务。

  3. master如果数据库确实存在但不可用,则可以使用以下方法之一将数据库返回到可用状态:

    • 检查对文件所在的文件夹的服务帐户的权限。

    • 如果可以启动服务器实例,请从完整数据库备份还原 master 数据库。

    • 如果服务器损坏master的数据库阻止启动SQL Server,请重新生成 master 数据库

      警告

      重新生成数据库会 master 重新生成所有系统数据库。 因此,对这些数据库的任何用户修改都将丢失。