Поделиться через


Восстановление базы данных master (Transact-SQL)

Область применения: SQL Server

В этой статье объясняется, как восстановить master базу данных из полной резервной копии базы данных.

Предупреждение

В случае аварийного восстановления экземпляр, в котором master восстанавливается база данных, должна быть как можно ближе к точному совпадению с исходным. Как минимум, у этого экземпляра восстановления должны быть те же версия, выпуск и уровень обновления, а также тот же набор возможностей и та же внешняя конфигурация (имя узла, принадлежность к кластеру и т. д.), что и у исходного экземпляра. В противном случае это может привести к произвольному поведению экземпляра SQL Server, разной поддержке возможностей и неприемлемому результату.

Восстановление master базы данных

  1. Запустите экземпляр сервера в однопользовательском режиме.

    Sql Server можно запустить с помощью -m параметров запуска или -f запуска. Дополнительные сведения о параметрах запуска см. в разделе ядро СУБД Параметры запуска службы.

    В командной строке выполните следующие команды и убедитесь, что вы замените 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. Подключение к SQL Server с помощью SQLCMD из другого окна командной строки

    SQLCMD -S <instance> -E -d master
    
  3. Чтобы восстановить полную резервную копию базы данных master, используйте следующую инструкцию RESTORE DATABASETransact-SQL:

    RESTORE DATABASE master FROM  <backup_device>  WITH REPLACE
    

    Параметр REPLACE указывает SQL Server восстановить указанную базу данных, даже если база данных с тем же именем уже существует. Существующая база данных в таком случае будет удалена. В однопользовательском режиме рекомендуется вводить инструкцию RESTORE DATABASE в программе sqlcmd. Дополнительные сведения см. в статье Программа sqlcmd.

    Внимание

    После восстановления главного экземпляра 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)
Перестроение системных баз данных
Параметры запуска службы Database Engine
Диспетчер конфигурации SQL Server
Резервное копирование и восстановление системных баз данных (SQL Server)
RESTORE (Transact-SQL)