Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
В SQL Server можно переместить файлы данных, журналов и полнотекстовых каталогов пользовательской базы данных в новое расположение, указав новое расположение файла в FILENAME предложении инструкции ALTER DATABASE . Этот метод применяется к перемещению файлов базы данных в одном экземпляре SQL Server. Чтобы переместить базу данных в другой экземпляр SQL Server или на другой сервер, используйте операции резервного копирования и восстановления или отсоединения и присоединения.
Примечание.
В этой статье рассматривается перемещение файлов пользовательской базы данных. Сведения о перемещении файлов системной базы данных см. в разделе "Перемещение системных баз данных".
Рекомендации
При перемещении базы данных на другой экземпляр сервера для обеспечения согласованного взаимодействия с пользователями и приложениями может потребоваться повторно создать некоторые или все метаданные для базы данных. Дополнительные сведения см. в разделе "Управление метаданными при создании базы данных" на другом сервере.
Некоторые функции СУБД SQL Server изменяют способ хранения данных в файлах базы данных. Эти функции ограничены определенными выпусками SQL Server. База данных, содержащая эти функции, не может быть перемещена в выпуск SQL Server, который не поддерживает их. Используйте представление динамического управления sys.dm_db_persisted_sku_features, чтобы перечислить все особенности издания, включенные в текущей базе данных.
Для выполнения процедур, описанных в этой статье, необходимо логическое имя файлов базы данных. Чтобы получить имя, выполните запрос столбца name в представлении каталога sys.master_files.
Полнотекстовые каталоги интегрируются в базу данных, а не хранятся в файловой системе. Полнотекстовые каталоги автоматически перемещаются при перемещении базы данных.
Примечание.
Убедитесь, что учетная запись службы в разделе настройки учетных записей служб Windows и разрешений имеет разрешения на новое расположение файла в файловой системе. Дополнительные сведения см. в разделе "Настройка разрешений файловой системы для доступа к системе управления базами данных".
Запланированные процедуры перемещений
Для запланированного перемещения файлов журнала или данных выполните следующие действия.
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Выполните следующую инструкцию, чтобы перевести базу данных в автономный режим.
ALTER DATABASE database_name SET OFFLINE;Для выполнения этого действия требуется эксклюзивный доступ к базе данных. Если другое подключение открыто к базе данных,
ALTER DATABASEинструкция блокируется до закрытия всех подключений. Чтобы переопределить это поведение, используйте конструкциюWITH <termination>. Например, чтобы автоматически откатить и отключить все остальные подключения к базе данных, используйте следующую команду:ALTER DATABASE database_name SET OFFLINE WITH ROLLBACK IMMEDIATE;Переместите файл или файлы в новое расположение.
Выполните следующую инструкцию:
ALTER DATABASE database_name SET ONLINE;Проверьте изменения в файле с помощью следующего запроса.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Перемещение планового обслуживания дисков
Чтобы переместить файл во время процесса запланированного обслуживания дисков, необходимо выполнить нижеприведенные шаги.
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Чтобы выполнить обслуживание, остановите экземпляр SQL Server или завершите работу системы. Дополнительные сведения см. в разделе "Пуск", "Остановка", "Приостановка", "Возобновление" и перезапуск служб SQL Server.
Переместите файл или файлы в новое расположение.
Перезапустите экземпляр SQL Server или сервера. Дополнительные сведения см. в разделе "Пуск", "Остановка", "Приостановка", "Возобновление" и "Перезапуск служб SQL Server"
Проверьте изменения в файле с помощью следующего запроса.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Процедура восстановления после сбоя
Если файл необходимо переместить в новое место из-за аппаратного сбоя, выполните следующие действия.
Внимание
Если база данных не может быть запущена, то есть в подозрительном режиме или в невосстановленном состоянии, только члены предопределенной роли sysadmin могут переместить файл.
Остановите экземпляр SQL Server, если он уже запущен.
Запустите экземпляр SQL Server в
masterрежиме восстановления только с помощью одной из следующих команд в командной строке.В случае с экземпляром по умолчанию (MSSQLSERVER) выполните следующую команду.
NET START MSSQLSERVER /f /T3608Для именованного экземпляра выполните следующую команду.
NET START MSSQL$instancename /f /T3608Дополнительные сведения см. в разделе "Пуск", "Остановка", "Приостановка", "Возобновление" и перезапуск служб SQL Server. Сведения о Linux см. в статье "Запуск, остановка и перезапуск служб SQL Server в Linux".
Для перемещения каждого файла используйте команды 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.
Переместите файл или файлы в новое расположение.
Запустите экземпляр 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>');
Примеры
В следующем примере файл журнала базы данных AdventureWorks2025 переносится в новое место во время запланированного перемещения.
Убедитесь, что вы находитесь в контексте базы данных
master.USE master; GOВозвращает имя логического файла.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG'; GOУстановите базу данных в автономном режиме.
ALTER DATABASE AdventureWorks2022 SET OFFLINE; GOФизически переместите файл в новое расположение. В следующем заявлении измените путь, указанный в
FILENAME, на новое расположение файла на вашем сервере.ALTER DATABASE AdventureWorks2022 MODIFY FILE (NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf'); GO ALTER DATABASE AdventureWorks2022 SET ONLINE; GOПроверьте новое расположение.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'AdventureWorks2022') AND type_desc = N'LOG';
Связанный контент
- Изменить базу данных (Transact-SQL)
- СОЗДАТЬ БАЗУ ДАННЫХ
- Отсоединение базы данных и подключение (SQL Server)
- Перемещение системных баз данных
- Перемещение файлов базы данных
- BACKUP (Transact-SQL)
- Инструкции RESTORE (Transact-SQL)
- Запуск, остановка, приостановка, возобновление и перезапуск служб SQL Server