Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
Рассмотрим пример перемещения файлов пользовательской базы данных SQL Server в новое месторасположение. В рассматриваемом примере все файлы одной отдельно взятой БД с именем EffectOffice будут перенесены с одного логического диска на другой (с диска T:\ на диск U:\).
EffectOffice
T:\
U:\
Перед началом процедуры переноса файлов базы данных остановим cервисы и приложения, работающие с этой базой данных.
Подключимся к экземпляру SQL Server, на котором расположена интересующая нас база данных, и выясним текущее размещение файлов БД с помощью запроса:
USE master; SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID('EffectOffice');
Выполним запрос на закрытие всех соединений к БД и перевод БД в одно-пользовательский режим:
ALTER DATABASE [EffectOffice] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Переведём базу данных в Offline-режим:
ALTER DATABASE [EffectOffice] SET OFFLINE;
Выполним копирование файлов БД в новое место-расположение с помощью утилиты командной строки robocopy, которая позволит нам сохранить все разрешения на каталоги и файлы на уровне NTFS.
В нашем примере файлы БД копируются из каталога T:\DBCL02-EffectOffice в каталог U:\DBCL02-EffectOffice. Каталог назначения при этом будет создан в процессе копирования и на него будут скопированы все атрибуты исходного каталога.
T:\DBCL02-EffectOffice
U:\DBCL02-EffectOffice
ROBOCOPY "T:\DBCL02-EffectOffice" "U:\DBCL02-EffectOffice" ^ /E /B /COPYALL /DCOPY:DAT /V /R:2 /W:10 ^ /UNILOG+:U:\Robocopy.log /BYTES /TEE /NP /UNICODE
Выполним замену путей к файлам на уровне SQL Server запросом вида (отдельный запрос по каждому файлу):
ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice.mdf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_log', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_log.LDF' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Version_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Version_dat.ndf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Message_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Message_dat.ndf' ); ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Blob_dat', Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Blob_dat.ndf' );
Переведём базу данных в Online-режим и обратно включим многопользовательский режим работы с БД
ALTER DATABASE [EffectOffice] SET ONLINE ALTER DATABASE [EffectOffice] SET MULTI_USER
Запустим сторонние службы и приложения, использующие базу данных и убедимся в штатной работе с данными.
После успешного запуска БД и проверок, можем удалить файлы с их исходного местоположения (T:\DBCL02-EffectOffice)
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Автор первичной редакции: Алексей Максимов Время публикации: 24.09.2020 09:15