Перемещение системных баз данных
В этом разделе описано, как в SQL Server перемещают системные базы данных. Эта операция может пригодиться в следующих ситуациях:
восстановление после сбоя. Например, база данных находится в подозрительном режиме, или ее работа была прекращена из-за сбоя оборудования;
плановое перемещение;
перемещение для запланированного обслуживания дисков.
Следующие процедуры применяются для перемещения файлов баз данных в пределах одного экземпляра SQL Server. Перемещение базы данных на другой экземпляр SQL Server или на другой сервер возможно через операции резервного копирования и восстановления или отсоединения и присоединения.
Для выполнения процедур, описанных в данном разделе, необходимо логическое имя файла базы данных. Это имя можно получить из столбца name представления каталога sys.master_files.
Важно! |
---|
При перемещении системной базы данных с последующим перестроением базы данных master необходимо заново переместить системную базу данных, поскольку операция перестроения устанавливает все системные базы данных в расположение по умолчанию. Дополнительные сведения о перестроении базы данных master см. в подразделе «Перестроение системной базы данных и реестра» в разделе Как установить SQL Server 2008 из командной строки. |
Запланированное перемещение и процедура запланированного обслуживания диска
Чтобы переместить данные системной базы данных или файл журнала в рамках запланированного перемещения (операции запланированного обслуживания), следуйте следующим указаниям: Данная процедура применима ко всем системным базам данных, кроме master и Resource.
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Остановите работу экземпляра SQL Server или выключите систему для проведения работ по обслуживанию дисков. Дополнительные сведения см. в разделе Остановка служб.
Переместите файл или файлы в новое расположение.
Перезапустите экземпляр SQL Server или сервер. Дополнительные сведения см. в разделе Запуск и перезапуск служб.
Проверьте правильность изменений с помощью следующего запроса.
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, выполните следующие дополнительные шаги.
С помощью следующего запроса убедитесь, что в базе данных msdb включен компонент Service Broker.
SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Дополнительные сведения о включении компонента Service Broker см. в разделе ALTER DATABASE (Transact-SQL).
Отправкой тестового сообщения проверьте работоспособность компонента Database Mail. Дополнительные сведения см. в разделе Устранение неполадок в работе компонента Database Mail.
Процедура восстановления после сбоя
Если нужно перенести файл из-за сбоя оборудования, необходимо выполнить приведенные ниже действия для его перемещения на новое место. Данная процедура применима ко всем системным базам данных, кроме master и Resource.
Важно! |
---|
Если базу данных запустить нельзя, она находится в подозрительном режиме или в невосстановленном состоянии, то файл может быть перемещен только членом предопределенной роли sysadmin. |
Остановите работу экземпляра SQL Server, если он запущен.
Запустите экземпляр SQL Server в режиме восстановления «только master», запустив из командной строки одну из следующих команд. В задаваемых для них параметрах учитывается регистр символов. Команды завершаются ошибкой, если параметры заданы не так, как показано.
В случае с экземпляром по умолчанию (MSSQLSERVER) запустите следующую команду:
NET START MSSQLSERVER /f /T3608
В случае с именованным экземпляром запустите следующую команду:
NET START MSSQL$instancename /f /T3608
Дополнительные сведения см. в разделе Как запустить экземпляр SQL Server (команды net).
Для каждого перемещаемого файла следует выполнить следующую инструкцию с помощью команд программы sqlcmd или в среде SQL Server Management Studio.
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Дополнительные сведения о работе с программой sqlcmd см. в разделе Использование программы sqlcmd.
Выйдите из программы sqlcmd или среды SQL Server Management Studio.
Остановите экземпляр SQL Server. Например, выполните команду NET STOP MSSQLSERVER.
Переместите файл или файлы в новое расположение.
Перезапустите экземпляр SQL Server. Например, выполните команду NET START MSSQLSERVER.
Проверьте правильность изменений с помощью следующего запроса.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Перемещение базы данных master
Чтобы переместить базу данных master, выполните следующие действия.
В меню Пуск выберите Все программы, укажите Microsoft SQL Server, затем Средства настройки и выберите пункт Диспетчер конфигурации SQL Server.
Находясь в узле Службы SQL Server, щелкните правой кнопкой мыши экземпляр SQL Server, например SQL Server (MSSQLSERVER), и выберите пункт Свойства.
В диалоговом окне Свойства SQL Server (instance_name) перейдите на вкладку Дополнительно.
Измените значения в разделе Параметры запуска, указав местоположение для файлов данных и файлов журнала базы данных master, а затем нажмите кнопку ОК. Перемещение файла журнала ошибок не является обязательным.
Значение параметра для файла данных должно соответствовать параметру -d, а значение для файла журнала — параметру -l. В следующем примере показаны значения параметров для указания местоположения файлов базы данных master и журнала, используемого по умолчанию.
-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\ master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\ LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\ DATA\mastlog.ldf
Если файлы данных и файлы журнала базы данных master планируется переместить в папку E:\SQLData, то значения параметров необходимо изменить следующим образом:
-dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf
Остановите работу экземпляра SQL Server, щелкнув правой кнопкой мыши имя экземпляра и выбрав команду Остановить.
Переместите файлы master.mdf и mastlog.ldf на новое место.
Перезапустите экземпляр SQL Server.
Проверьте правильность изменений для базы данных master, выполнив следующий запрос.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master'); GO
Перемещение базы данных Resource
В SQL Server 2008 база данных Resource находится в каталоге <диск>:\Program Files\Microsoft SQL Server\MSSQL10.<имя_экземпляра>\MSSQL\Binn\. Эту базу данных нельзя переместить.
Примеры
А. Перемещение базы данных tempdb
В следующем примере показано перемещение файлов базы данных tempdb и журнала на новое место в рамках запланированного перемещения.
Примечание |
---|
Поскольку база данных tempdb создается повторно при каждом запуске экземпляра SQL Server, то нет необходимости физически переносить файлы данных и журнала. Файлы создаются в новом месте во время перезагрузки службы на шаге 3. До перезагрузки службы база данных tempdb продолжает использовать файлы данных и журнала, расположенные в существующем месте. |
Определение логических имен файлов базы данных tempdb и их текущего местоположения на диске.
SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
Измените местоположение каждого файла с помощью инструкции 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
Остановите и перезапустите экземпляр SQL Server.
Проверьте изменение файла.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Удалите файлы tempdb.mdf и templog.ldf из начального местоположения.
Журнал изменений
Обновленное содержимое |
---|
Обновлен раздел «Перемещение базы данных resource», где указано, что базу данных resource нельзя переместить. |
См. также