还原 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 语句Transact-SQL 语句:

    RESTORE DATABASE master FROM <backup_device> WITH REPLACE;
    

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

    重要

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

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

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

例子

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

对于命名实例, sqlcmd 命令必须指定 -S<computer-name>\<instance-name> 该选项。

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