sp_attach_db (Transact-SQL)

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

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

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

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

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

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

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

Значок ссылки на разделСинтаксические обозначения в 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 (Transact-SQL).

    Поэтому при присоединении базы данных SQL Server 2005, содержащей файлы полнотекстовых каталогов, в экземпляр сервера SQL Server 2008 файлы каталога присоединяются из предыдущего местоположения вместе с другими файлами базы данных, также как и в 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 (Transact-SQL).

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

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

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

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

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

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

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

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

База данных-источник должна по крайней мере иметь версию 80 (SQL Server 2000), чтобы ее можно было присоединить к SQL Server 2008. Для баз данных SQL Server 2000 или SQL Server 2005, имеющих уровень совместимости менее 80, при присоединении будет установлен уровень совместимости 80.

Разрешения

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

Примеры

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

EXEC sp_attach_db @dbname = N'AdventureWorks', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_log.ldf';