Поделиться через


Присоединение и отсоединение базы данных (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).

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Когда зашифрованная база данных сначала присоединяется к экземпляру SQL Server, владелец базы данных должен открыть ключ master базы данных, выполнив следующую инструкцию: 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).

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

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

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

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

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

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

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

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

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

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

Важно!

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

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

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

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

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

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

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

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

См. также:

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