Отсоединение базы данных и подключение (SQL Server)

Область применения: SQL Server

Файлы данных и журналов транзакций базы данных можно отсоединить, а затем повторно подключиться к одному или другому экземпляру SQL Server. Отключение и присоединение базы данных полезно, если вы хотите изменить базу данных на другой экземпляр SQL Server на одном компьютере или переместить базу данных.

Разрешения

Разрешения на доступ к файлам задаются во время нескольких операций базы данных, включая отключение или присоединение базы данных.

Внимание

Рекомендуется не подключать или восстанавливать базы данных из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Прежде чем использовать базу данных из неизвестного или ненадежного источника, запустите DBCC CHECKDB (Transact-SQL) в базе данных на непроизводном сервере, а также изучите код, например хранимые процедуры или другой определяемый пользователем код в базе данных.

Отсоединение базы данных

Отключение базы данных удаляет ее из экземпляра SQL Server, но оставляет базу данных нетронутой в его файлах данных и файлах журнала транзакций. Затем эти файлы можно использовать для подключения базы данных к любому экземпляру SQL Server, включая сервер, с которого была отключена база данных.

Вы не можете отсоединить базу данных, если одно из следующих значений имеет значение true:

  • База данных реплицируется и публикуется. При репликации база данных должна быть снята с публикации. Перед тем как отсоединить базу данных, необходимо отключить публикацию, выполнив процедуру sp_replicationdboption.

    Примечание.

    Если вы не можете использовать sp_replicationdboption, можно удалить репликацию, выполнив sp_removedbreplication.

  • Имеется моментальный снимок базы данных.

    Перед отсоединением базы данных необходимо удалить все моментальные снимки. Дополнительные сведения см. в разделе "Удаление моментального снимка базы данных" (Transact-SQL).

    Примечание.

    Моментальный снимок базы данных не может быть отключен или присоединен.

  • Эта база данных является частью группы доступности AlwaysOn.

    База данных не может быть отключена, пока она не будет удалена из группы доступности. Дополнительные сведения см. в разделе Удаление базы данных — источника из группы доступности Always On.

  • База данных находится в сеансе зеркального копирования.

    База данных не может быть отключена, если сеанс не будет завершен. Дополнительные сведения см. в разделе Удаление зеркального отображения базы данных (SQL Server).

  • База данных помечена как подозрительная. Подозреваемая база данных не может быть отключена; Прежде чем вы сможете отсоединить его, его необходимо поместить в режим экстренного реагирования. Дополнительные сведения о том, как поместить базу данных в аварийный режим, см. в статье ALTER DATABASE (Transact-SQL).

  • База данных является системной базой данных.

Резервное копирование, восстановление и отключение

Для разностных резервных копий отсоединение базы данных, доступной только для чтения, приводит к потере сведений о базовой копии для разностного копирования. Дополнительные сведения см. в разделе разностных резервных копий (SQL Server).

Реагирование на ошибки отсоединения

Ошибки, возникшие во время отсоединения базы данных, могут воспрепятствовать чистому закрытию базы данных и перестроению журнала транзакций. При получении сообщения об ошибке выполните следующие действие по исправлению.

  1. Заново присоедините все файлы, связанные с базой данных, а не только первичный файл.

  2. Исправьте неполадку, ставшую причиной сообщения об ошибке.

  3. Отсоедините базу данных повторно.

Присоединение базы данных

Вы можете присоединить скопированную или отсоединяемую базу данных SQL Server. При присоединении базы данных SQL Server 2005 (9.x), содержащей файлы полнотекстового каталога на экземпляр SQL Server, файлы каталога присоединяются из предыдущего расположения вместе с другими файлами базы данных, так же, как и в SQL Server 2005 (9.x). Дополнительные сведения см. в разделе Обновление полнотекстового поиска.

При присоединении базы данных все файлы данных (.mdf и .ndf файлы) должны быть доступны. Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.

Примечание.

Если присоединенный первичный файл данных доступен только для чтения, ядро СУБД предполагает, что база данных доступна только для чтения.

При первом присоединении зашифрованной базы данных к экземпляру SQL Server владелец базы данных должен открыть главный ключ базы данных (DMK), выполнив следующую инструкцию: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' Рекомендуется включить автоматическую расшифровку dmK, выполнив следующую инструкцию: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY Дополнительные сведения см. в статьях CREATE MASTER KEY (Transact-SQL) и ALTER MASTER KEY (Transact-SQL).

Требования для присоединения файлов журналов частично зависят от того, доступна база данных для записи и чтения или только для чтения.

  • Для базы данных, доступной для записи и чтения, обычно можно присоединить файл журнала в новом расположении. Однако в некоторых случаях для повторного соединения базы данных требуются файлы ее существующих журналов. Поэтому важно всегда хранить все отсоединяемые файлы журнала, пока база данных не будет успешно подключена без них.

    Если база данных для чтения и записи содержит один файл журнала, и вы не указываете новое расположение для файла журнала, операция присоединения выглядит в старом расположении для файла. Если старый файл журнала найден, он используется независимо от того, была ли база данных закрыта. Однако если старый файл журнала не найден, и если база данных была закрыта и не имеет активной цепочки журналов, операция присоединения пытается создать новый файл журнала для базы данных.

  • Если присоединенный первичный файл данных доступен только для чтения, ядро СУБД предполагает, что база данных доступна только для чтения. Для базы данных, доступной только для чтения, файл или файлы журнала должны быть доступны в расположении, указанном в первичном файле базы данных. Невозможно создать новый файл журнала, так как SQL Server не может обновить расположение журнала, хранящееся в основном файле.

Изменения метаданных при присоединении базы данных

Если база данных, доступная только для чтения, отсоединяется, а затем снова присоединяется, то данные о текущей базовой копии для разностного копирования будут утеряны. Базовая копия для разностного копирования — это последняя из полных резервных копий всех данных из базы данных или из подмножества файлов и файловых групп, содержащихся в базе данных. Без сведений master о базовом резервном копировании база данных становится несинхронизирована с базой данных только для чтения, поэтому разностные резервные копии, сделанные после этого, могут привести к непредвиденным результатам. Таким образом, если вы используете разностные резервные копии с базой данных, доступной только для чтения, необходимо установить новую разностную базу, выполнив полную резервную копию после повторного кэширования базы данных. Сведения о разностных резервных копиях см. в разделе "Разностные резервные копии" (SQL Server).

После присоединения происходит запуск базы данных. Обычно присоединение базы данных переводит ее в то же состояние, в котором она находилась на момент отсоединения или копирования. Однако операции присоединения и отсоединения отключают создание межбазовых цепочек владения для этой базы данных. Сведения о том, как включить цепочки владения, см. в разделе Параметр конфигурации сервера "cross db ownership chaining".

Внимание

По умолчанию в целях безопасности параметры is_broker_enabled, is_honor_broker_priority_on и is_trustworthy_on устанавливаются в значение OFF при подключении базы данных. Сведения о настройке этих параметров см. в статье ALTER DATABASE (Transact-SQL). Дополнительные сведения о метаданных см. в разделе "Управление метаданными при создании базы данных" на другом сервере.

Резервное копирование, восстановление и подключение

Как и любая база данных, полностью или частично автономная, база данных с восстановлением файлов не может быть присоединена. Базу данных можно присоединить после остановки последовательности восстановления. Затем можно снова запустить последовательность восстановления.

Присоединение базы данных к другому экземпляру сервера

Внимание

База данных, созданная более последней версией SQL Server, не может быть присоединена в более ранних версиях. Это исключает физическое использование базы данных с более старой версией ядро СУБД. Однако это относится к состоянию метаданных и не влияет на уровень совместимости базы данных. Дополнительные сведения см. на уровне совместимости ALTER DATABASE (Transact-SQL).

Чтобы обеспечить согласованный интерфейс для пользователей и приложений, при присоединении базы данных к другому экземпляру сервера может потребоваться повторно создать некоторые или все метаданные для базы данных на другом экземпляре сервера. Эти метаданные включают такие как имена входа и задания. Дополнительные сведения см. в разделе "Управление метаданными при создании базы данных" на другом сервере.

Задача Статья
Отсоединение базы данных - sp_detach_db (Transact-SQL)
- Отсоединение базы данных
Присоединение базы данных - CREATE DATABASE
- Присоединение базы данных
- sp_attach_db (Transact-SQL)
- sp_attach_single_file_db (Transact-SQL)
Обновление базы данных с помощью операций отсоединения и подключения - Обновление базы данных с помощью отсоединения и подключения (Transact-SQL)
Перемещение базы данных с помощью операций отсоединения и подключения - Перемещение базы данных с помощью отсоединения и подключения (Transact-SQL)
Удаление моментального снимка базы данных - Удаление моментального снимка базы данных (Transact-SQL)