Отсоединение и присоединение в основном используются для переноса баз данных с одного диска или сервера на другой. Если требуется скопировать базу данных на один или несколько удаленных серверов, можно выполнить резервное копирование базы данных и разослать копии. Другой способ — выполнить отсоединение базы данных и разослать пользователям все ее файлы. У себя на сервере пользователи смогут выполнить присоединение базы данных и сразу же начать работать с ней. Процедура отсоединения и присоединения занимает гораздо меньше времени, чем создание и восстановление резервной копии. Кроме того, отсоединенную базу данных можно записать на компакт-диски и разослать пользователям. Пользователи смогут работать с базой данных непосредственно с компакт-диска в режиме «только для чтения». Такой подход особенно эффективен при рассылке каталогов, которые не должны изменяться.
Если планируется скопировать базу данных на компакт-диск, предварительно необходимо установить все ее группы файлов в режим «только для чтения». Для этого используется команда ALTER DATABASE MODIFY FILEGROUP filegroup_name READONLY.
Выполнять операции присоединения и отсоединения базы данных могут только члены фиксированной роли сервера sysadmin. Эти права не могут быть переданы никаким другим способом, кроме как включением пользователей в эту фиксированную роль сервера.
Для отсоединения базы данных используется следующая хранимая процедура:
sp_detach_db [@dbname =] "dbname" [, [@skipchecks =] "skipchecks"]
Аргумент "dbname" указывает имя базы данных, которую необходимо отсоединить. Аргумент "skipchecks" управляет обновлением статистики при отсоедине-
нии. Если значение этого аргумента равно TRUE, то обновление статистики пропускается, если же указывается FALSE, то обновление статистики будет выполнено. Для отсоединения базы данных pubs нужно использовать следующую команду:
ЕХЕС sp_detach_db "pubs"
После отсоединения базы данных вы получаете в свое распоряжение набор обычных файлов, с которыми можно выполнять обычные операции, в том числе и архивирование с использованием утилиты NT Backup.
Для присоединения отсоединенной базы данных используется системная хранимая процедура sp_attach_db:
sp_attach_db [@dbname =] "dbname", [(Pfilenamel =] "filenameji" [, .16]
Аргумент "filename_n" должен содержать полный путь к первичному файлу присоединяемой базы данных. Описание остальных файлов базы данных хранится в первичном файле. Если положение этих файлов было изменено, то необходимо явно указать их положение при вызове хранимой процедуры — через запятую в аргументе "f i lename_n".
Количество файлов, которое можно присоединить с помощью хранимой процедуры sp_attach_db, ограничивается 16. Если необходимо выполнить подключение базы данных с большим количеством файлов, используется команда CREATE DATABASE FOR ATTACH.
Для присоединения базы данных pubs нужно выполнить следующую команду: sp_detach_db"pubs".
"d:\mssql\data\pubs.mdf" .
"d:\mssql\data\pubs_log.Idf"
Если база данных состоит из одного файла данных и одного файла журнала транзакций, то ее можно присоединить, указав только первичный файл. База данных должна быть отсоединена от сервера с помощью хранимой процедуры sp_detach_db. Для присоединения такой базы данных используется следующая хранимая процедура:
sp_attach_sing1e_file_db [@dbname =] "dbname".
[@physname =] "physicaljiame"
Сервер автоматически создаст для базы данных файл журнала транзакций и выполнит удаление из базы данных поддержку репликации, если она была установлена.
Для присоединения базы данных pubs с использованием только первичного файла необходима следующая команда: sp_attach_single_file_db "pubs", "d:\mssql\data\pubs.mdf"
Передача прав владения
Если администратор баз данных вашей компании увольняется и ему на смену приходит другой человек, необходимо передать права владения всеми объектами, включая базы данных, новому администратору.