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


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

Примеры

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

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