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


Перемещение системных баз данных

В этом разделе описывается перемещение системных баз данных в SQL Server. Эта операция может пригодиться в следующих ситуациях:

  • Восстановление после сбоя. Например, база данных находится в подозрительном режиме, или ее работа была прекращена из-за сбоя оборудования;

  • Плановое перемещение.

  • Перемещение для запланированного обслуживания дисков.

Следующие процедуры применяются к перемещению файлов базы данных в том же экземпляре SQL Server. Чтобы переместить базу данных в другой экземпляр SQL Server или на другой сервер, используйте операции резервного копирования и восстановления или отсоединения и присоединения.

Для выполнения процедур, описанных в данном разделе, необходимо логическое имя файлов базы данных. Это имя можно получить из столбца name представления каталога sys.master_files .

Важно!

При перемещении системной базы данных с последующим перестроением базы данных master необходимо заново переместить системную базу данных, поскольку операция перестроения устанавливает все системные базы данных в расположение по умолчанию.

В этом разделе

Запланированное перемещение и процедура запланированного обслуживания диска

Чтобы переместить данные системной базы данных или файл журнала в рамках запланированного перемещения (операции запланированного обслуживания), следуйте следующим указаниям: Данная процедура применима ко всем системным базам данных, кроме master и Resource.

  1. Для каждого перемещаемого файла выполните следующую инструкцию.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. Остановите работу экземпляра SQL Server или выключите систему для проведения работ по обслуживанию дисков. Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.

  3. Переместите файл или файлы в новое расположение.

  4. Перезапустите экземпляр SQL Server или сервер. Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.

  5. Проверьте изменения в файле с помощью следующего запроса.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Если база данных msdb перемещена, а экземпляр SQL Server настроен для Database Mail, выполните следующие дополнительные действия.

  1. Убедитесь, что компонент Service Broker включен для базы данных msdb, выполнив следующий запрос.

    SELECT is_broker_enabled   
    FROM sys.databases  
    WHERE name = N'msdb';  
    

    Дополнительные сведения о включении компонента Service Broker см. в разделе ALTER DATABASE (Transact-SQL).

  2. Отправкой тестового сообщения проверьте работоспособность компонента Database Mail.

Процедура восстановления после сбоя

Если нужно перенести файл из-за сбоя оборудования, необходимо выполнить приведенные ниже действия для его перемещения на новое место. Данная процедура применима ко всем системным базам данных, кроме master и Resource.

Важно!

Если базу данных запустить нельзя, она находится в подозрительном режиме или в невосстановленном состоянии, то файл может быть перемещен только членом предопределенной роли sysadmin.

  1. Остановите работу экземпляра SQL Server , если он запущен.

  2. Запустите экземпляр SQL Server в режиме восстановления «только master», запустив из командной строки одну из следующих команд. В задаваемых для них параметрах учитывается регистр символов. Команды завершаются ошибкой, если параметры заданы не так, как показано.

    • В случае с экземпляром по умолчанию (MSSQLSERVER) запустите следующую команду:

      NET START MSSQLSERVER /f /T3608  
      
    • В случае с именованным экземпляром запустите следующую команду:

      NET START MSSQL$instancename /f /T3608  
      

    Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.

  3. Для каждого перемещаемого файла используйте команды sqlcmd или SQL Server Management Studio для выполнения следующей инструкции.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    

    Дополнительные сведения об использовании программы sqlcmd см. в статье Использование программы sqlcmd.

  4. Завершите работу программы sqlcmd или SQL Server Management Studio.

  5. Остановите экземпляр SQL Server. Например, выполните команду NET STOP MSSQLSERVER.

  6. Переместите файл или файлы в новое расположение.

  7. Повторно запустите экземпляр SQL Server. Например, выполните команду NET START MSSQLSERVER.

  8. Проверьте изменения в файле с помощью следующего запроса.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Перемещение базы данных master

Чтобы переместить базу данных master, выполните следующие действия.

  1. В меню Пуск выберите Все программы, укажите Microsoft SQL Server, затем Средства настройкии выберите пункт Диспетчер конфигурации SQL Server.

  2. В узле службы SQL Server щелкните правой кнопкой мыши экземпляр SQL Server (например, SQL Server (MSSQLSERVER)) и выберите Свойства.

  3. В диалоговом окне Свойства SQL Server (instance_name) откройте вкладку Параметры запуска.

  4. В поле Существующие параметры выберите параметр -d, чтобы переместить файл данных master. Нажмите Обновить для сохранения изменений.

    В поле Укажите параметр запуска задайте новый путь к базе данных master.

  5. В поле Существующие параметры выберите параметр -l, чтобы переместить файл журнала master. Нажмите Обновить для сохранения изменений.

    В поле Укажите параметр запуска задайте новый путь к базе данных master.

    Значение параметра для файла данных должно соответствовать параметру -d , а значение для файла журнала — параметру -l . В следующем примере показаны значения параметров для указания местоположения файла базы данных master по умолчанию.

    -dC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    Если планируется переместить файл данных базы данных master в расположение E:\SQLData, значения параметра будут изменены следующим образом.

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Остановите экземпляр SQL Server, щелкнув правой кнопкой мыши имя экземпляра и выбрав остановить.

  7. Переместите файлы master.mdf и mastlog.ldf на новое место.

  8. Повторно запустите экземпляр SQL Server.

  9. Проверьте правильность изменений для базы данных master, выполнив следующий запрос.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    

Перемещение базы данных Resource

База данных ресурсов находится < в каталоге drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<> instance_name\MSSQL\Binn\. Эту базу данных нельзя переместить.

Продолжение: после перемещения всех системных баз данных

Если все системные базы данных перемещаются на новый диск или том либо на другой сервер с другой буквой диска, выполните следующие обновления.

  • Измените путь к журналу агента SQL Server. Если этого не сделать, то агент SQL Server не сможет запуститься.

  • Измените расположение по умолчанию для базы данных. Создание новой базы данных может завершиться ошибкой, если буква диска и путь, указанные в качестве места расположения по умолчанию, не существуют.

Измените путь к журналу агента SQL Server.

  1. В среде SQL Server Management Studio в обозревателе объектов разверните узел Агент SQL Server.

  2. Щелкните правой кнопкой мыши Журналы ошибок и выберите пункт Настроить.

  3. В диалоговом окне Настройка журналов ошибок агента SQL Server задайте новое расположение для файла SQLAGENT.OUT. Расположение по умолчанию — C:\Program Files\Microsoft SQL Server\MSSQL12.<>instance_name\MSSQL\Log\.

Измените расположение по умолчанию для базы данных

  1. В среде SQL Server Management Studio в обозревателе объектов щелкните правой кнопкой мыши сервер SQL Server и выберите пункт Свойства.

  2. В диалоговом окне Свойства сервера выберите пункт Настройки базы данных.

  3. На панели Места хранения, используемые базой данных по умолчаниюможно просмотреть текущие места хранения, используемые по умолчанию для новых файлов данных и файлов журнала.

  4. Остановите и запустите службу SQL Server, чтобы завершить изменение.

Примеры

A. Перемещение базы данных tempdb

В следующем примере показано перемещение файлов базы данных tempdb и журнала на новое место в рамках запланированного перемещения.

Примечание

Поскольку база данных tempdb создается повторно при каждом запуске экземпляра SQL Server, вам не нужно физически перемещать файлы данных и журналов. Файлы создаются в новом месте во время перезагрузки службы на шаге 3. До перезагрузки службы база данных tempdb продолжает использовать файлы данных и файл журнала, расположенные в существующем месте.

  1. Определение логических имен файлов базы данных tempdb и их текущего местоположения на диске.

    SELECT name, physical_name AS CurrentLocation  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    GO  
    
  2. Измените местоположение каждого файла с помощью ALTER DATABASE.

    USE master;  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');  
    GO  
    
  3. Остановите и перезапустите экземпляр SQL Server.

  4. Проверьте изменение файла.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    
  5. Удалите файлы tempdb.mdf и templog.ldf из исходного местоположения.

См. также:

База данных ресурсов
База данных tempdb
База данных master
База данных msdb
Шаблон базы данных
Перемещение пользовательских баз данных
Перемещение файлов базы данных
Запуск, остановка, приостановка, возобновление и перезапуск компонента Database Engine, агента SQL и службы браузера SQL Server
ALTER DATABASE (Transact-SQL)
Перестроение системных баз данных