sp_attach_db (Transact-SQL)

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

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

ms179877.note(ru-ru,SQL.90).gifВажно!
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Взамен рекомендуется использовать инструкцию CREATE DATABASE database_name FOR ATTACH. Дополнительные сведения см. в разделе CREATE DATABASE (Transact-SQL).
ms179877.note(ru-ru,SQL.90).gifПримечание.
Чтобы перестроить несколько файлов журнала, если один или более файлов изменили расположение, используйте инструкцию CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.
ms179877.security(ru-ru,SQL.90).gifПримечание безопасности.
Рекомендуется не присоединять и не восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций 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. Список имен файлов должен включать хотя бы первичный файл. Первичный файл содержит системные таблицы, указывающие на другие файлы базы данных. Список также должен включать все файлы, перемещенные после отключения базы данных.

    ms179877.note(ru-ru,SQL.90).gifПримечание.
    Этот аргумент сопоставляется параметру FILENAME инструкции CREATE DATABASE. Дополнительные сведения см. в разделе CREATE DATABASE (Transact-SQL).

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

    ms179877.note(ru-ru,SQL.90).gifПримечание.
    Нельзя присоединить полнотекстовый каталог к корневому каталогу.

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

Отсутствует

Замечания

Хранимая процедура 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, не может быть присоединена в ранних версиях.

ms179877.note(ru-ru,SQL.90).gifПримечание.
Невозможно отсоединить или присоединить моментальный снимок базы данных.

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

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

Разрешения

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

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

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

Примеры

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

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

См. также

Справочник

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

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

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

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

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

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

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

12 декабря 2006 г.

Добавления
  • В раздел «Примечания» было добавлено, что база данных, созданная более новой версией SQL Server, не может быть присоединена в более ранних версиях.

5 декабря 2005 г.

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