Перемещение системных баз данных
В этой статье описывается перемещение системных баз данных в SQL Server. Эта операция может пригодиться в следующих ситуациях:
Восстановление после сбоя. Например, база данных находится в подозрительном режиме, или ее работа была прекращена из-за сбоя оборудования;
Перемещение для запланированного обслуживания дисков.
Следующие процедуры применяются к перемещению файлов базы данных в одном экземпляре SQL Server. Чтобы переместить базу данных в другой экземпляр SQL Server или на другой сервер, используйте операцию резервного копирования и восстановления.
Для выполнения процедур, описанных в этой статье, необходимо логическое имя файлов базы данных. Это имя можно получить из столбца name представления каталога sys.master_files .
При перемещении системной базы данных с последующим перестроением базы данных master необходимо снова переместить системную базу данных, поскольку вследствие операции перестроения все системные базы данных устанавливаются в расположение по умолчанию.
Перемещение системных баз данных
Чтобы переместить данные системной базы данных или файл журнала в рамках запланированного перемещения (операции запланированного обслуживания), следуйте следующим указаниям: К ним относятся системные базы данных model , msdb и tempdb .
Эта процедура применима ко всем системным базам данных, кроме master и Resource . Шаги по перемещению базы данных master см. далее в этой статье. Базу данных Resource нельзя переместить.
Запишите существующее расположение файлов базы данных, которые нужно переместить, проверив представление каталога sys.master_files.
Убедитесь, что учетная запись службы для SQL Server ядро СУБД имеет полные разрешения на новое расположение файлов. Дополнительные сведения см. в статье Настройка учетных записей службы Windows и разрешений. Если учетная запись службы ядро СУБД не может управлять файлами в новом расположении, экземпляр SQL Server не запустится.
Для перемещения каждого файла базы данных выполните следующую инструкцию.
До перезагрузки службы база данных продолжает использовать файлы данных и журнала в существующем расположении.
Остановите экземпляр SQL Server для выполнения обслуживания. Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.
Скопируйте файл (файлы) базы данных в новое расположение. Обратите внимание, что этот шаг не является обязательным для системной базы данных tempdb , эти файлы будут автоматически создаваться в новом расположении.
Перезапустите экземпляр SQL Server или сервер. Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.
Проверьте изменения в файле с помощью следующего запроса. Системные базы данных должны сообщать о новых физических расположениях файлов.
Поскольку на шаге 5 вместо того чтобы переместить файлы базы данных, вы скопировали их, теперь можно безопасно удалить неиспользуемые файлы базы данных из их предыдущего расположения.
Дальнейшие действия после перемещения системной базы данных msdbЕсли база данных msdb перемещена, а Database Mail настроена, выполните следующие дополнительные действия.
Убедитесь, что компонент Service Broker включен для msdb базы данных, выполнив следующий запрос.
Если компонент Service Broker не включен msdb , его необходимо повторно включить, чтобы Database Mail функционировать. Дополнительные сведения см. в статье об ALTER DATABASE . SET ENABLE_BROKER.
Убедитесь, что значение is_broker_enabled теперь равно 1.
Отправкой тестового сообщения проверьте работоспособность компонента Database Mail.
Процедура восстановления после сбоя
Если нужно перенести файл из-за сбоя оборудования, необходимо выполнить приведенные ниже действия для его перемещения на новое место. Эта процедура применима ко всем системным базам данных, кроме master и Resource . В следующих примерах используется командная строка Windows и служебная программа sqlcmd.
Если базу данных нельзя запустить или она находится в подозрительном режиме или в невосстановленном состоянии, то файл могут перемещать только члены, имеющие предопределенную роль администратора.
Убедитесь, что учетная запись службы для SQL Server ядро СУБД имеет полные разрешения на новое расположение файлов. Дополнительные сведения см. в статье Настройка учетных записей службы Windows и разрешений. Если учетная запись службы ядро СУБД не может управлять файлами в новом расположении, экземпляр SQL Server не запустится.
Остановите работу экземпляра SQL Server , если он запущен.
Запустите экземпляр SQL Server в режиме восстановления «только master», запустив из командной строки одну из следующих команд. При использовании параметра запуска 3608 SQL Server прекращается автоматический запуск и восстановление любой базы данных, кроме master . Дополнительные сведения см. в разделах Параметры запуска и TF3608.
В задаваемых для них параметрах учитывается регистр символов. Команды завершаются ошибкой, если параметры заданы не так, как показано.
В случае с экземпляром по умолчанию (MSSQLSERVER) запустите следующую команду:
В случае с именованным экземпляром запустите следующую команду:
Сразу после запуска службы с флагом трассировки 3608 и /f запустите подключение к серверу sqlcmd, чтобы утвердить доступное отдельное подключение. Например, при локальном выполнении программы sqlcmd на том же сервере, что и экземпляр по умолчанию (MSSQLSERVER), а также для подключения с помощью встроенной проверки подлинности Active Directory выполните следующую команду:
Чтобы подключиться к именованному экземпляру на локальном сервере с помощью встроенной проверки подлинности Active Directory выполните следующее:
Дополнительные сведения о синтаксисе sqlcmd см. в разделе о служебной программе sqlcmd.
Для каждого перемещаемого файла используйте команды sqlcmd или SQL Server Management Studio для выполнения следующей инструкции. Дополнительные сведения об использовании программы sqlcmd см. в статье Использование программы sqlcmd. После открытия сеанса sqlcmd выполните следующую инструкцию по одному разу для перемещения каждого файла:
Завершите работу программы sqlcmd или SQL Server Management Studio.
Остановите экземпляр SQL Server. Например, в командной строке выполните команду NET STOP MSSQLSERVER .
Скопируйте файл (файлы) в новое расположение.
Повторно запустите экземпляр SQL Server. Например, в командной строке выполните команду NET START MSSQLSERVER .
Проверьте изменения в файле с помощью следующего запроса.
Поскольку на шаге 7 вместо того чтобы переместить файлы базы данных, вы скопировали их, теперь можно безопасно удалить неиспользуемые файлы базы данных из их предыдущего расположения.
Перемещение базы данных master
Чтобы переместить базу данных master , выполните следующие действия.
Убедитесь, что учетная запись службы для SQL Server ядро СУБД имеет полные разрешения на новое расположение файлов. Дополнительные сведения см. в статье Настройка учетных записей службы Windows и разрешений. Если учетная запись службы ядро СУБД не может управлять файлами в новом расположении, экземпляр SQL Server не запустится.
Через меню Пуск найдите и запустите диспетчер конфигурации SQL Server. Дополнительные сведения об ожидаемом расположении см. в статье о диспетчере конфигурации SQL Server.
В узле служб SQL Server щелкните правой кнопкой мыши экземпляр SQL Server (например, SQL Server (MSSQLSERVER)) и выберите пункт "Свойства".
В диалоговом окне Свойства SQL Server (instance_name) выберите вкладку Параметры запуска.
В поле Существующие параметры выберите параметр -d . В поле "Указание параметра запуска" измените параметр на новый путь к файлу master данных . Для сохранения изменений выберите Обновить.
В поле Существующие параметры выберите параметр -l . В поле "Указание параметра запуска" измените параметр на новый путь к файлу master журнала . Для сохранения изменений выберите Обновить.
Значение параметра для файла данных должно соответствовать параметру -d , а значение для файла журнала — параметру -l . В следующем примере показаны значения параметров для местоположения файла данных master по умолчанию.
-dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf
-lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Если файл данных базы данных master планируется переместить в E:\SQLData , значения параметров необходимо изменить следующим образом:
Нажмите ОК, чтобы окончательно сохранить изменения и закрыть диалоговое окно Свойства SQL Server (имя_экземпляра) .
Остановите экземпляр SQL Server, щелкнув правой кнопкой мыши имя экземпляра и выбрав команду "Остановить".
Скопируйте файлы master.mdf и mastlog.ldf в новое расположение.
Повторно запустите экземпляр SQL Server.
Проверьте правильность изменений файла для базы данных master , выполнив следующий запрос.
На этом этапе среда SQL Server должна выполняться как обычно. Однако корпорация Майкрософт рекомендует также изменить запись реестра, указанную в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup , где instance_ID имеет вид MSSQL13.MSSQLSERVER . В этом кусте измените значение SQLDataRoot на новый путь. Невозможность обновления реестра может привести сбою исправления и обновления.
Поскольку на шаге 9 вместо того чтобы переместить файлы базы данных, вы скопировали их, теперь можно безопасно удалить неиспользуемые файлы базы данных из их предыдущего расположения.
Перемещение базы данных Resource
Расположение базы данных Resource — \<*drive*>:\Program Files\Microsoft SQL Server\MSSQL\<version>.\<*instance_name*>\MSSQL\Binn\\ . Эту базу данных нельзя переместить.
Дальнейшие действия после перемещения системной базы данных
Если все системные базы данных перемещаются на новый диск или том либо на другой сервер с другой буквой диска, выполните следующие обновления.
Измените путь к журналу агента SQL Server. Если этого не сделать, то агент SQL Server не сможет запуститься.
Измените расположение по умолчанию для базы данных. Создание новой базы данных может завершиться ошибкой, если буква диска и путь, указанные в качестве места расположения по умолчанию, не существуют.
Измените путь к журналу агента SQL Server.В SQL Server Management Studio в обозревателе объектов разверните Агент SQL Server.
Щелкните правой кнопкой мыши Журналы ошибок и выберите Настроить.
В диалоговом окне Настройка журналов ошибок агента SQL Server задайте новое расположение для файла SQLAGENT.OUT. По умолчанию он расположен в папке C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\\ .
Измените расположение по умолчанию для базы данныхВ SQL Server Management Studio подключитесь к нужному экземпляру SQL Server в обозреватель объектов. Щелкните экземпляр правой кнопкой мыши и выберите пункт Свойства.
В диалоговом окне Свойства сервера выберите пункт Настройки базы данных.
На панели Места хранения, используемые базой данных по умолчаниюможно просмотреть текущие места хранения, используемые по умолчанию для новых файлов данных и файлов журнала.
Остановите и запустите службу SQL Server, чтобы завершить изменение.
Примеры
A. Перемещение базы данных tempdbВ следующем примере показано перемещение файлов базы данных tempdb и журнала на новое место в рамках запланированного перемещения.
Воспользуйтесь этой возможностью, чтобы проверить оптимальный размер и размещение файлов tempdb . Дополнительные сведения см. в статье об оптимизации производительности базы данных tempdb в SQL Server.
Так как tempdb повторно создается при каждом запуске экземпляра SQL Server, вам не нужно физически перемещать файлы данных и журналов. Файлы создаются в новом расположении во время перезагрузки службы на шаге 4. До перезагрузки службы tempdb продолжает использовать файлы данных и файлы журнала, расположенные в существующем расположении.
Определение логических имен файлов базы данных tempdb и их текущего местоположения на диске.
Убедитесь, что учетная запись службы для SQL Server ядро СУБД имеет полные разрешения на новое расположение файлов. Дополнительные сведения см. в статье Настройка учетных записей службы Windows и разрешений. Если учетная запись службы ядро СУБД не может управлять файлами в новом расположении, экземпляр SQL Server не запустится.
Измените местоположение каждого файла с помощью ALTER DATABASE .
До перезагрузки службы tempdb продолжает использовать файлы данных и файлы журнала, расположенные в существующем расположении.