2.3 Перемещение файлов и баз данных
Может потребоваться переместить файлы базы данных или даже целые базы
данных. Рассмотрим, как можно это сделать, а также как можно скопировать
базу данных целиком.
Перемещение файлов и баз данных
Можно перемещать файлы базы данных в другое место, используя оператор
ALTER DATABASE или с помощью SSMS.
Перед тем, как перемещать файлы базы данных, нужно перевести базу
данных в автономный режим.
При перемещении файлов базы данных нужно использовать логическое имя
файла, которое задается файлу при создании базы данных. Узнать логическое
имя файла можно с помощью системного представления sys.database_files.
В следующем примере показано, как перевести БД AdventureWorks в
автономный режим, переместить файл данных и вернуть БД в режим online:
ALTER DATABASE AdventureWorks SET OFFLINE;
// Move the files on the file system
ALTER DATABASE AdventureWorks
MODIFY FILE (NAME = AWDataFile,
FILENAME = 'C:\AWDataFile.mdf');
ALTER DATABASE AdventureWorks SET ONLINE;
24
Отсоединение (Detaching) и присоединение (Attaching) баз данных
Для подключения к конкретному экземпляру SQL Server или отключения
базы данных можно использовать функциональность Detaching и Attaching,
которую предоставляет SQL Server. Это широко используемый метод для
перемещения базы данных из одного экземпляра в другой.
Отсоединить базу данных от экземпляра SQL Server можно с помощью среды
SSMS или системной хранимой процедурой sp_detach_db.
Отсоединение базы данных не удаляет данные из ее файлов. Удаляются
записи метаданных об этой базе данных из системных баз данных на
экземпляре SQL Server. Затем отсоединенная база данных больше не
отображается в списке баз данных в среде SSMS или в результатах
системного представления sys.databases. После отсоединения базы данных ее
файлы можно перемещать или копировать, а затем присоединить к другому
экземпляру SQL Server.
Не все базы данных могут быть отсоединены. Базы данных, которые
настроены для репликации, зеркальные или в подозрительном состоянии не
могут быть отсоединены.
Нельзя отсоединить базу данных, если есть открытые соединения. Только
после закрытия всех открытых соединений SQL Server позволит выполнить
операцию Detach. Использование среды SSMS во время этой операции
предлагает возможность принудительного отключения (закрытия) всех
соединений.
Присоединение баз данных можно выполнить в среде SSMS или с помощью
оператора
CREATE DATABASE … FOR ATTACH
.
Можно использовать системные хранимые процедуры sp_attach_db и
sp_attach_single_file_db. Их устаревший синтаксис заменен на параметр FOR
ATTACH инструкции CREATE DATABASE. Также обратите внимание, что
нет эквивалентной замены для процедуры sp_detach_db.
Общей проблемой повторного подключения базы данных является то, что
пользователи базы данных могут лишиться прав доступа.
25
Do'stlaringiz bilan baham: |