还原 master 数据库 (Transact-SQL)

适用于:SQL Server

本文说明如何通过完整数据库备份还原 master 数据库。

警告

发生灾难恢复时,要将 master 数据库还原到的实例应尽可能接近与原始数据库完全匹配的实例。 此恢复实例至少应具有与原始实例相同的版本和修补程序级别,并且应具有与原始实例相同的功能选择和相同的外部配置(主机名、群集成员身份等)。 否则,可能会导致未定义的 SQL Server 实例行为,功能支持不一致,并且不能保证其可行。

还原 master 数据库

  1. 在单用户模式下启动服务器实例。

    可以使用 -m-f 启动参数来启动 SQL Server。 有关启动参数的详细信息,请参阅数据库引擎服务启动选项

    在命令提示符中运行以下命令,并确保将 MSSQLXX.instance 替换为相应的文件夹名称:

    cd C:\Program Files\Microsoft SQL Server\MSSQLXX.instance\MSSQL\Binn
    sqlservr -c -f -s <instance> -mSQLCMD
    
    • -mSQLCMD 参数可确保只有 sqlcmd 可以连接到 SQL Server。
    • 对于默认实例名称,请使用 -s MSSQLSERVER
    • -c 将 SQL Server 作为应用程序启动,从而绕过服务控制管理器以缩短启动时间

    如果 SQL Server 实例由于 master 数据库损坏而无法启动,则必须先重新生成系统数据库。 有关详细信息,请参阅重新生成系统数据库

  2. 从另一个命令提示符窗口使用 SQLCMD 连接到 SQL Server

    SQLCMD -S <instance> -E -d master
    
  3. 若要还原 master 的完整数据库备份,请使用以下 RESTORE DATABASE Transact-SQL 语句:

    RESTORE DATABASE master FROM  <backup_device>  WITH REPLACE
    

    REPLACE 选项指示 SQL Server 还原指定的数据库,即使已经存在同名数据库也不例外。 现有的数据库(如果存在)被删除。 在单用户模式下,建议在 sqlcmd 实用工具中输入 RESTORE DATABASE 语句。 有关详细信息,请参阅 使用 sqlcmd 实用工具

    重要

    在还原 master 后,SQL Server 实例会关闭,然后终止 sqlcmd 进程。 在重新启动服务器实例之前,请删除单用户引导参数。 有关详细信息,请参阅配置服务器启动选项(SQL Server 配置管理器)

  4. 通常将服务器实例作为服务重启,而不使用任何启动参数。

  5. 继续执行其他恢复步骤,例如还原其他数据库、附加数据库以及更正用户不匹配问题。

示例

下面的示例将在默认服务器实例上还原 master 数据库。 该示例假定服务器实例是在单用户模式下运行。 该示例启动 sqlcmd 并执行 RESTORE DATABASE 语句,以便从磁盘设备 master 还原 Z:\SQLServerBackups\master.bak的完整数据库备份。

注意

对于命名实例,sqlcmd 命令必须指定 -S<ComputerName>\<InstanceName> 选项。

C:\> sqlcmd  
1> RESTORE DATABASE master FROM DISK = 'Z:\SQLServerBackups\master.bak' WITH REPLACE;  
2> GO  

另请参阅

完整数据库还原(简单恢复模式)
完整数据库还原(完整恢复模式)
孤立用户故障排除 (SQL Server)
数据库分离和附加 (SQL Server)
重新生成系统数据库
数据库引擎服务启动选项
SQL Server 配置管理器
系统数据库的备份和还原 (SQL Server)
RESTORE (Transact-SQL)