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


sp_attach_single_file_db (Transact-SQL)

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

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

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

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

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

Значок ссылки на разделСоглашения о синтаксисе Transact-SQL

Синтаксис

sp_attach_single_file_db [ @dbname= ] 'dbname'
        , [ @physname= ] 'physical_name'

Аргументы

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

  • [ @physname= ] 'physical_name'
    Физическое имя, включая путь файла базы данных. Аргумент physical_name имеет тип nvarchar(260) и значение по умолчанию NULL.

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

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

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

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

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

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

Нет

Замечания

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

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

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

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

Не используйте эту процедуру на реплицированной базе данных.

Разрешения

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

Примеры

Следующий пример отсоединяет AdventureWorks2008R2 и затем присоединяет один файл из AdventureWorks2008R2 к текущему серверу.

USE master;
GO
EXEC sp_detach_db @dbname = 'AdventureWorks2008R2';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks2008R2', 
    @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf';