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


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

Изменения: 12 декабря 2006 г.

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

ms190794.note(ru-ru,SQL.90).gifПримечание.
Формат хранения данных SQL Server на диске в 64-разрядной и 32-разрядной средах одинаков. Следовательно, присоединение работает и в 32-разрядной, и в 64-разрядной средах. База данных, отсоединенная от экземпляра сервера, работающего в одной среде, может быть присоединена к экземпляру сервера, работающему в другой среде.
ms190794.note(ru-ru,SQL.90).gifПримечание.
Дополнительные сведения о разрешениях на доступ к файлам, которые устанавливаются каждый раз во время отсоединения и присоединения базы данных, см. в разделе Защита данных и файлов журналов.

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

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

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

  • База данных реплицируется и публикуется. При репликации база данных должна быть снята с публикации. Перед тем как отсоединить базу данных, необходимо отключить публикацию, выполнив процедуру sp_replicationdboption.
    ms190794.note(ru-ru,SQL.90).gifПримечание.
    Если невозможно использовать процедуру sp_replicationdboption, можно удалить репликацию, выполнив процедуру sp_removedbreplication.
  • В базе данных существует моментальный снимок базы данных.
    Перед отсоединением базы данных необходимо удалить все ее моментальные снимки. Дополнительные сведения см. в разделе Как удалить моментальный снимок базы данных (Transact-SQL).
    ms190794.note(ru-ru,SQL.90).gifПримечание.
    Невозможно отсоединить или присоединить моментальный снимок базы данных.
  • База данных находится в сеансе зеркального копирования.
    Отключить базу данных невозможно, пока этот сеанс не завершится. Дополнительные сведения см. в разделе Удаление зеркального отображения базы данных.
  • База данных помечена как подозрительная. В SQL Server 2005 подозрительную базу данных невозможно отсоединить. Для отсоединения ее необходимо перевести в аварийный режим. Дополнительные сведения о переводе базы данных в аварийный режим см. в разделе ALTER DATABASE (Transact-SQL).
  • База данных является системной.

При отсоединении базы данных очищается кэш плана в экземпляре SQL Server. Очистка кэша плана вызывает повторную компиляцию всех последующих планов выполнения и может быть причиной непредвиденного временного уменьшения производительности запроса. В среде SQL Server 2005 с пакетом обновления 2 (SP2) для каждого очищенного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующие сообщения: «SQL Server обнаружил %d экземпляров, сброшенных на диск хранилищ кэша для хранилища кэша %s (часть кэша планов) в результате операций по обслуживанию или изменению настройки базы данных». Это сообщение регистрируется каждые пять минут, пока кэш сброшен в пределах этого интервала времени.

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

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

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

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

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

  1. Заново присоедините все файлы, связанные с базой данных, а не только первичный файл.
  2. Исправьте неполадку, ставшую причиной сообщения об ошибке.
  3. Отсоедините базу данных повторно.

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

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

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

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

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

ms190794.note(ru-ru,SQL.90).gifПримечание.
Если присоединяемый первичный файл данных доступен только для чтения, компонент 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 не может обновить расположение журнала, указанное в первичном файле.
    ms190794.note(ru-ru,SQL.90).gifВажно!
    Если база данных, доступная только для чтения, отсоединяется, а затем снова присоединяется, данные основы для разностной копии теряются. По этой причине база данных master становится не синхронизированной с базой данных, доступной только для чтения. Разностные резервные копии, сделанные после этого, могут привести к непредвиденным результатам. Таким образом, если с базой данных, доступной только для чтения, используются разностные резервные копии, то после повторного присоединения базы данных необходимо установить текущую основу для разностной копии, выполнив полное резервное копирование.

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

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

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

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

ms190794.note(ru-ru,SQL.90).gifПримечание.
База данных, созданная в более поздней версии SQL Server, не может быть присоединена в ранних версиях.
ms190794.note(ru-ru,SQL.90).gifПримечание.
Присоединение правильно работает с форматом хранения vardecimal. Однако каждый компонент Database Engine должен быть обновлен по крайней мере до версии SQL Server 2005 с пакетом обновления 2 (SP2), и во всех связанных базах данных должен быть включен формат хранения vardecimal. Например, нельзя присоединить базу данных в формате vardecimal с пакетом обновления 2 (SP2) в более ранней версии SQL Server. Дополнительные сведения о формате хранения vardecimal см. в разделе Хранение десятичных данных в виде значений переменной длины.

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

Обновление базы данных с предыдущей версии SQL Server

В SQL Server 2005 операции отсоединения и присоединения можно применять для обновления пользовательской базы данных с SQL Server версии 7.0 или SQL Server 2000. Однако действуют следующие ограничения.

  • Копии баз данных master, model или msdb, созданные при помощи SQL Server 7.0 или SQL Server 2000, невозможно присоединить в SQL Server 2005.
  • Файлы журналов SQL Server 7.0, содержащие операции создания индекса, невозможно присоединить в SQL Server 2000 и SQL Server 2005.
  • При присоединении реплицируемой базы данных, которая была скопирована, а не отсоединена, необходимо выполнить следующие действия.
    • При присоединении базы данных к обновленной версии того же экземпляра сервера необходимо выполнить процедуру sp_vupgrade_replication, чтобы обновить репликацию после завершения операции присоединения. Дополнительные сведения см. в разделе sp_vupgrade_replication (Transact-SQL).
    • При подключении базы данных к другому экземпляру сервера независимо от его версии необходимо запустить процедуру sp_removedbreplication для удаления репликации по завершении операции подключения. Дополнительные сведения см. в разделе Хранимая процедура sp_removedbreplication (Transact-SQL).

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

Перемещение базы данных или файла базы данных

ms190794.note(ru-ru,SQL.90).gifВажно!
Рекомендуется перемещать базы данных с помощью процедуры планового перемещения ALTER DATABASE, а не с помощью операций отсоединения и присоединения. Дополнительные сведения см. в разделе Перемещение файлов баз данных.

Обычно операции отсоединения и присоединения применяются для перемещения базы данных. Типичные сценарии включают перемещение базы данных в одно из следующих мест:

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

Перемещение базы данных с помощью операций отсоединения и присоединения включает в себя следующие этапы:

  1. отсоединение базы данных;
  2. перемещение файлов базы данных на другой сервер или диск;
  3. присоединение базы данных путем указания нового местоположения перемещенного файла или файлов.

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

См. также

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

Присоединение и отсоединение баз данных
Защита данных и файлов журналов
Основные сведения о файлах и файловых группах

Другие ресурсы

CREATE DATABASE (Transact-SQL)
sp_detach_db (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Новое содержимое
  • Добавлены сведения о том, что формат хранения данных SQL Server на диске в 64-разрядной и 32-разрядной средах одинаков.
  • Добавлено замечание в раздел «Присоединение базы данных к другому экземпляру сервера».
  • Добавлено примечание, касающееся формата хранения vardecimal.

17 июля 2006 г.

Новое содержимое
  • Добавлены сведения об очистке кэша планов в раздел «Отсоединение базы данных».

17 июля 2006 г.

Новое содержимое
  • Добавлено ограничение для отсоединения системных баз данных.
  • Добавлен раздел «Резервное копирование, восстановление и отсоединение».
  • Добавлен раздел «Резервное копирование, восстановление и присоединение».

5 декабря 2005 г.

Новое содержимое
  • Добавлено примечание о безопасности.