Перемещение базы данных при помощи отсоединения и присоединения (Transact-SQL)Move a database using detach and attach (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В этом разделе описывается перемещение отсоединенной базы данных в другое местоположение и ее повторное присоединение к тому же или другому экземпляру сервера в SQL Server 2019 (15.x)SQL Server 2019 (15.x).This topic describes how to move a detached database to another location and re-attach it to the same or a different server instance in SQL Server 2019 (15.x)SQL Server 2019 (15.x). Однако рекомендуется переносить базы данных с помощью процедуры запланированного переноса ALTER DATABASE, а не путем отсоединения и присоединения.However, we recommend that you move databases by using the ALTER DATABASE planned relocation procedure, instead of using detach and attach. Дополнительные сведения см. в статье Move User Databases.For more information, see Move User Databases.

Важно!

Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников.We recommend that you do not attach or restore databases from unknown or untrusted sources. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQLTransact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

ПроцедураProcedure

Перемещение базы данных при помощи операций отсоединения и присоединенияTo move a database by using detach and attach

  1. Отсоединение базы данных.Detach the database. Дополнительные сведения см. в разделе Отсоединение базы данных.For more information, see Detach a Database.

  2. Переместите в «Проводнике» или окне командной строки файлы отсоединенной базы данных и журналов в новое место.In a Windows Explorer or Windows Command Prompt window, move the detached database file or files and log file or files to the new location.

    Перенос файлов журналов обязателен, даже если нужно создать новые файлы журналов.You should move the log files even if you intend to create new log files. В некоторых случаях для повторного присоединения базы данных требуются файлы ее существующих журналов.In some cases, reattaching a database requires its existing log files. Поэтому всегда храните все файлы отсоединенных журналов, пока база данных не будет успешно присоединена без них.Therefore, always keep all the detached log files until the database has been successfully attached without them.

    Примечание

    При попытке присоединить базу данных, не указывая файл журнала, операцией присоединения будет произведен поиск файла журнала в его исходном месте.If you try to attach the database without specifying the log file, the attach operation will look for the log file in its original location. Если копия журнала все еще хранится в исходном месте, она будет присоединена.If a copy of the log still exists in the original location, that copy is attached. Чтобы избежать применения исходного файла журнала, либо укажите путь к новому файлу журнала, либо удалите исходную его копию (после его копирования в новое место).To avoid using the original log file, either specify the path of the new log file or remove the original copy of the log file (after copying it to the new location).

  3. Присоединение скопированных файлов.Attach the copied files. Дополнительные сведения см. в статье Attach a Database.For more information, see Attach a Database.

ПримерExample

В следующем примере создается копия базы данных AdventureWorks2012AdventureWorks2012 с именем MyAdventureWorks.The following example creates a copy of the AdventureWorks2012AdventureWorks2012 database named MyAdventureWorks. Инструкции Transact-SQLTransact-SQL выполняются в окне редактора запросов, подключенном к экземпляру сервера, к которому выполнено присоединение.The Transact-SQLTransact-SQL statements are executed in a Query Editor window that is connected to the server instance to which is attached.

  1. Отсоедините базу данных AdventureWorks2012AdventureWorks2012 . Для этого выполните следующие инструкции Transact-SQLTransact-SQL .Detach the AdventureWorks2012AdventureWorks2012 database by executing the following Transact-SQLTransact-SQL statements:

    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, соответственно.Using the method of your choice, copy the database files (AdventureWorks208R2_Data.mdf and AdventureWorks208R2_log) to: C:\MySQLServer\AdventureWorks208R2_Data.mdf and C:\MySQLServer\AdventureWorks208R2_Log.ldf, respectively.

    Важно!

    При работе с производственными базами данных помещайте базу данных и журналы транзакций на отдельные диски.For a production database, place the database and transaction log on separate disks.

    При копировании файлов по сети на диск удаленного компьютера укажите имя удаленного места в формате UNC.To copy files over the network to a disk on a remote computer, use the universal naming convention (UNC) name of the remote location. Имя UNC имеет следующий формат: \\ имя_сервера \ имя_общего_хранилища \ путь \ имя_файла.A UNC name takes the form \\Servername\Sharename\Path\Filename. Как и при записи файлов на жесткий диск локального компьютера, для записи (или считывания) файла на диск удаленного компьютера учетной запись пользователя, которая используется экземпляром SQL ServerSQL Server, должны быть предоставлены соответствующие разрешения.As with writing files to the local hard disk, the appropriate permissions that are required to read or write to a file on the remote disk must be granted to the user account used by the instance of SQL ServerSQL Server.

  3. Присоедините перемещенную базу данных и, возможно, ее журнал, выполнив следующие инструкции Transact-SQLTransact-SQL :Attach the moved database and, optionally, its log by executing the following Transact-SQLTransact-SQL statements:

    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 StudioSQL Server Management Studioтолько что присоединенная база данных отображается в обозревателе объектов не сразу.In SQL Server Management StudioSQL Server Management Studio, a newly attached database is not immediately visible in Object Explorer. Чтобы отобразить базу данных, щелкните в обозревателе объектов пункт Вид , а затем Обновить.To view the database, in Object Explorer, click View, and then Refresh. Теперь, раскрыв в обозревателе объектов узел Базы данных , можно увидеть в списке присоединенную базу данных.When the Databases node is expanded in Object Explorer, the newly attached database now appears in the list of databases.

См. такжеSee Also

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