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


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

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

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

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

Процедура

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

  1. Отсоединение базы данных. Дополнительные сведения см. в разделе Отсоединение базы данных.

  2. Переместите в «Проводнике» или окне командной строки файлы отсоединенной базы данных и журналов в новое место.

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

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

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

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

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

  3. Присоединение скопированных файлов. Дополнительные сведения см. в разделе Присоединение базы данных.

Пример

В следующем примере создается копия базы данных AdventureWorks2012 с именем MyAdventureWorks. Инструкции Transact-SQL выполняются в окне редактора запросов, подключенном к экземпляру сервера, к которому выполнено присоединение.

  1. Отсоедините базу данных AdventureWorks2012. Для этого выполните следующие инструкции Transact-SQL.

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks2012';
    GO
    
  2. Скопируйте любым образом файлы базы данных (AdventureWorks208R2_Data.mdf и AdventureWorks208R2_log) в папки «C:\MySQLServer\AdventureWorks208R2_Data.mdf» и «C:\MySQLServer\AdventureWorks208R2_Log.ldf» соответственно.

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

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

    При копировании файлов по сети на диск удаленного компьютера укажите имя удаленного места в формате UNC. UNC-имя принимает форму **\\Servername\Sharename\Path\**Filename. Как и при записи файлов на жесткий диск локального компьютера, для записи (или считывания) файла на диск удаленного компьютера учетной запись пользователя, которая используется экземпляром SQL Server, должны быть предоставлены соответствующие разрешения.

  3. Присоедините перемещенную базу данных и, возможно, ее журнал, выполнив следующие инструкции Transact-SQL:

    USE master;
    GO
    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')
        FOR ATTACH;
    GO
    

    В среде Среда SQL Server Management Studio только что присоединенная база данных отображается в обозревателе объектов не сразу. Чтобы отобразить базу данных, щелкните в обозревателе объектов пункт Вид, а затем Обновить. Теперь, раскрыв в обозревателе объектов узел Базы данных, можно увидеть в списке присоединенную базу данных.

См. также

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

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