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


sp_attach_db (Transact-SQL)

Присоединение базы данных к серверу.

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

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого рекомендуется использовать инструкцию CREATE DATABASE database_name FOR ATTACH.Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).

Примечание

Чтобы перестроить несколько файлов журнала, если один или более файлов изменили расположение, используйте инструкцию CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

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

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

sp_attach_db [ @dbname= ] 'dbname'
    , [ @filename1= ] 'filename_n' [ ,...16 ] 

Аргументы

  • [ @dbname= ] **'**dbnam '
    Имя базы данных, присоединяемой к серверу. Имя должно быть уникальным. Аргумент dbname имеет тип sysname и значение по умолчанию NULL.

  • [ @filename1= ] 'filename_n'
    Это физическое имя файла базы данных, содержащее путь к каталогу. Аргумент filename_n имеет тип nvarchar(260) и значение по умолчанию NULL. Можно указать до 16 имен файлов. Имена параметров начинаются с @filename1 и возрастают до @filename16. Список имен файлов должен включать хотя бы первичный файл. Первичный файл содержит системные таблицы, указывающие на другие файлы базы данных. Список также должен включать все файлы, перемещенные после отключения базы данных.

    Примечание

    Этот аргумент сопоставляется с параметром FILENAME инструкции CREATE DATABASE.Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).

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

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Отсутствует

Замечания

Хранимая процедура sp_attach_db должна запускаться только для баз данных, предварительно отключенных от сервера с помощью явной операции sp_detach_db, или для копий баз данных. Если необходимо указать более 16 файлов, используется инструкция CREATE DATABASE database_name FOR ATTACH или CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).

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

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

Примечание

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

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

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

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

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

При первом присоединении базы данных к новому экземпляру SQL Server или ее восстановлении копия главного ключа базы данных (зашифрованная главным ключом службы) еще не хранится на сервере. Необходимо расшифровать главный ключ базы данных с помощью инструкции OPEN MASTER KEY. Как только главный ключ базы данных будет расшифрован, появится возможность разрешить автоматическую расшифровку в будущем с помощью инструкции ALTER MASTER KEY REGENERATE, чтобы оставить на сервере копию главного ключа базы данных, зашифрованного с помощью главного ключа службы. После обновления базы данных с переходом от более ранней версии главный ключ базы данных должен быть создан повторно для использования нового алгоритма шифрования AES. Дополнительные сведения о повторном создании главного ключа базы данных см. в разделе ALTER MASTER KEY (Transact-SQL). Время, необходимое для повторного создания главного ключа базы данных с обновлением до алгоритма шифрования AES, зависит от числа объектов, защищаемых главным ключом базы данных. Повторное создание главного ключа базы данных с обновлением до алгоритма шифрования AES необходимо произвести только один раз. Это никак не повлияет на последующие операции повторного создания, выполняемые в соответствии со стратегией смены ключей.

Разрешения

Дополнительные сведения об управлении разрешениями при присоединении базы данных см. в разделе CREATE DATABASE (SQL Server Transact-SQL).

Примеры

В данном примере происходит подключение файлов из базы данных AdventureWorks2012 к текущему серверу.

EXEC sp_attach_db @dbname = N'AdventureWorks2012', 
    @filename1 = 
N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf', 
    @filename2 = 
N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';

См. также

Справочник

sp_detach_db (Transact-SQL)

sp_helpfile (Transact-SQL)

Хранимая процедура sp_removedbreplication (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)

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

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