Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В SQL Server можно переместить файлы данных, журналов и полнотекстового каталога пользовательской базы данных в новое расположение, указав новое расположение файла в предложении FILENAME инструкции ALTER DATABASE . Этот метод применяется к перемещению файлов базы данных в одном экземпляре SQL Server. Чтобы переместить базу данных в другой экземпляр SQL Server или на другой сервер, используйте операции резервного копирования и восстановления или отсоединения и присоединения.
Соображения
При перемещении базы данных на другой экземпляр сервера для обеспечения согласованного взаимодействия с пользователями и приложениями может потребоваться повторно создать некоторые или все метаданные для базы данных. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).
Некоторые функции СУБД SQL Server изменяют способ хранения данных в файлах базы данных. Эти функции ограничены определенными выпусками SQL Server. База данных, содержащая эти функции, не может быть перемещена в выпуск SQL Server, который не поддерживает их. Используйте динамическое представление данных sys.dm_db_persisted_sku_features для перечисления всех включенных функций, специфичных для издания, в текущей базе данных.
Для процедур в этом разделе требуется логическое имя файлов базы данных. Чтобы получить имя, выполните запрос к столбцу name в представлении каталога sys.master_files.
Начиная с SQL Server 2008 R2 полнотекстовые каталоги интегрируются в базу данных, а не хранятся в файловой системе. Полнотекстовые каталоги теперь автоматически перемещаются при перемещении базы данных.
Процедура запланированного перемещения
Для запланированного перемещения файлов журнала или данных выполните следующие действия.
Выполните следующую инструкцию:
ALTER DATABASE database_name SET OFFLINE;
Переместите файл или файлы в новое расположение.
Для каждого перемещаемого файла выполните следующую инструкцию.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
Выполните следующую инструкцию:
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 или сервера. Дополнительные сведения см. в статье "Пуск", "Остановка", "Приостановка", "Возобновление", "Перезапуск ядра СУБД", агента 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 в режиме восстановления только для главного сервера, введя одну из следующих команд в командной строке.
В случае с экземпляром по умолчанию (MSSQLSERVER) выполните следующую команду.
NET START MSSQLSERVER /f /T3608
Для именованного экземпляра выполните следующую команду.
NET START MSSQL$instancename /f /T3608
Дополнительные сведения см. в статье Запуск, остановка, приостановка, возобновление и перезапуск ядра СУБД, агента SQL Server или службы "Обозреватель SQL Server".
Для перемещения каждого файла используйте команды 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>');
Примеры
В следующем примере файл журнала AdventureWorks2012 перемещается в новое расположение в рамках запланированного перемещения.
USE master;
GO
-- Return the logical file name.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks2012')
AND type_desc = N'LOG';
GO
ALTER DATABASE AdventureWorks2012 SET OFFLINE;
GO
-- Physically move the file to a new location.
-- In the following statement, modify the path specified in FILENAME to
-- the new location of the file on your server.
ALTER DATABASE AdventureWorks2012
MODIFY FILE ( NAME = AdventureWorks2012_Log,
FILENAME = 'C:\NewLoc\AdventureWorks2012_Log.ldf');
GO
ALTER DATABASE AdventureWorks2012 SET ONLINE;
GO
--Verify the new location.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks2012')
AND type_desc = N'LOG';
См. также
Изменить базу данных (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
Подключение и отсоединение базы данных (SQL Server)
Перемещение системных баз данных
Перемещение файлов базы данных
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Запуск, остановка, приостановка, возобновление и перезапуск компонента Database Engine, агента SQL и службы браузера SQL Server