Как перенести файлы базы данных в SQL Server

Однажды понадобилось перенести файлы базы данных (mdf и log) sql server с одного диска (системного) на другие диски. Это может понадобится, например, для ускорения или если место на системном диске заканчивается.

Шаг 1. Определение где находятся файлы базы данных сейчас

Для этого понадобится выполнить следующий скрипт:

USE master
GO
SELECT name AS LogicalFileName, physical_name AS FileLocation
, state_desc AS Status 
FROM sys.master_files 
WHERE database_id = DB_ID('capital');

Получится что-то вроде этого.

текущее местоположение файлов базы данных

Шаг 2. Переводим базу данных в режим OFFLINE

Выполняем скрипт

USE master
GO
ALTER DATABASE capital SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Этот скрипт практически мгновенно останавливает базу данных, при этом не заботися о завершении текущих транзакций. Далее необходимо физически перенести файлы базы данных в новое место. 

Шаг 3. Изменение базы данных для применения нового местоположения файлов

Только один файл может быть изменен за раз, используя команду ALTER DATABASE.

USE master
GO
ALTER DATABASE capital
MODIFY FILE 
( NAME = capital, 
FILENAME = 'D:\DB\capital.mdf'); -- Новое местоположение файла

USE master
GO
ALTER DATABASE capital
MODIFY FILE 
( NAME = capital_log, 
FILENAME = 'D:\Logs\capital_log.ldf'); -- Новое местоположение файла логов

Шаг 4. Оживление базы в ONLINE

Выполняем скрипт включения базы данных.

USE master
GO
ALTER DATABASE capital SET ONLINE;

Изменение местоположения файлов базы данных SQL SERVER

 

Комментарии

comments powered by Disqus