Присоединение и отсоединение базы данных (SQL Server)

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

Формат хранения данных SQL Server на диске в 64-разрядной и 32-разрядной средах одинаков. Следовательно, присоединение работает и в 32-разрядной, и в 64-разрядной средах. База данных, отсоединенная от экземпляра сервера, работающего в одной среде, может быть присоединена к экземпляру сервера, работающему в другой среде.

В этом разделе:

  • Безопасность

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

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

  • Связанные задачи

Безопасность

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

Примечание по безопасностиПримечание по безопасности

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

Базу данных невозможно отсоединить в следующих случаях.

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

    ПримечаниеПримечание

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

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

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

    ПримечаниеПримечание

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

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

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

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

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

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

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

Реакция на ошибки отсоединения

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

Можно присоединить скопированную или отсоединенную базу данных SQL Server. Когда базу данных SQL Server 2005 с файлами полнотекстовых каталогов присоединяют к экземпляру сервера SQL Server 2012, то присоединение файлов каталогов выполняется из их предыдущего расположения вместе с другими файлами баз данных, как и в SQL Server 2005. Дополнительные сведения см. в разделе Обновление полнотекстового поиска из SQL Server 2005.

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

ПримечаниеПримечание

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

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

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

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

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

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

В этом разделе.

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

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

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

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

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

После присоединения происходит запуск базы данных. Обычно присоединение базы данных переводит ее в то же состояние, в котором она находилась на момент отсоединения или копирования. Однако операции присоединения и отсоединения отключают создание межбазовых цепочек владения для этой базы данных. Сведения о том, как включить цепочки владения, см. в разделе Параметр конфигурации сервера «cross db ownership chaining». Также TRUSTWORTHY устанавливается в OFF при каждом присоединении базы данных. Дополнительные сведения о том, как установить TRUSTWORTHY в ON, см. в разделе ALTER DATABASE (Transact-SQL).

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

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

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

Важное примечаниеВажно!

База данных, созданная в более поздней версии SQL Server, не может быть присоединена в ранних версиях.

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Связанные задачи

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

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

Обновление базы данных при помощи операций отсоединения и присоединения

Перемещение базы данных при помощи операций отсоединения и присоединения

Удаление моментального снимка базы данных

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Основные понятия

Файлы и файловые группы базы данных