sp_detach_db (Transact-SQL)sp_detach_db (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

Отсоединяет неиспользуемую базу данных от экземпляра сервера и (необязательно) выполняет инструкцию UPDATE STATISTICS для всех таблиц перед отключением.Detaches a database that is currently not in use from a server instance and, optionally, runs UPDATE STATISTICS on all tables before detaching.

Важно!

Перед отсоединением реплицируемой базы данных ее публикация должна быть прекращена.For a replicated database to be detached, it must be unpublished. Дополнительные сведения см. в подразделе «Замечания» далее в этом разделе.For more information, see the "Remarks" section later in this topic.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

  
sp_detach_db [ @dbname= ] 'database_name'   
    [ , [ @skipchecks= ] 'skipchecks' ]   
    [ , [ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' ]   

АргументыArguments

[ @dbname = ] 'database_name' Имя базы данных, подсоединяемой.[ @dbname = ] 'database_name' Is the name of the database to be detached. database_name имеет значение типа sysname и значение по умолчанию NULL.database_name is a sysname value, with a default value of NULL.

[ @skipchecks = ] 'skipchecks' Указывает, следует ли пропустить или выполнить обновление статистики.[ @skipchecks = ] 'skipchecks' Specifies whether to skip or run UPDATE STATISTIC. параметром skipchecks установленным — это значение типа nvarchar (10) со ЗНАЧЕНИЕМ по умолчанию NULL.skipchecks is a nvarchar(10) value, with a default value of NULL. Чтобы пропустить СТАТИСТИКУ обновления, укажите значение true.To skip UPDATE STATISTICS, specify true. Чтобы явно выполнить обновление статистики, укажите значение false.To explicitly run UPDATE STATISTICS, specify false.

По умолчанию инструкция UPDATE STATISTICS запускается для обновления информации о данных в таблицах и индексах.By default, UPDATE STATISTICS is performed to update information about the data in the tables and indexes. Выполнение UPDATE STATISTICS имеет смысл для тех баз данных, которые планируется переместить на постоянные носители информации.Performing UPDATE STATISTICS is useful for databases that are to be moved to read-only media.

[ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' Указывает, что файл полнотекстового индекса, связанный с отсоединяемой базой данных, не будет удален во время операции отсоединения базы данных.[ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' Specifies that the full-text index file associated with the database that is being detached will not be dropped during the database detach operation. KeepFulltextIndexFile — это значение типа nvarchar (10) со значением по умолчанию true.KeepFulltextIndexFile is a nvarchar(10) value with a default of true. Если KeepFulltextIndexFile имеет значение false, все файлы полнотекстовых индексов, связанные с базой данных, и метаданные полнотекстового индекса удаляются, если только база данных не доступна только для чтения.If KeepFulltextIndexFile is false, all the full-text index files associated with the database and the metadata of the full-text index are dropped, unless the database is read-only. Если задано значение NULL или true, метаданные, связанные с полнотекстовым текстом, сохраняются.If NULL or true, full-text related metadata are kept.

Важно!

Параметр ** @ KeepFulltextIndexFile** будет удален в следующей версии SQL ServerSQL Server .The @keepfulltextindexfile parameter will be removed in a future version of SQL ServerSQL Server. Не используйте его при работе над новыми приложениями и как можно быстрее измените приложения, в которых он в настоящее время используется.Do not use this parameter in new development work, and modify applications that currently use this parameter as soon as possible.

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

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

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

NoneNone

RemarksRemarks

При отсоединении базы данных все метаданные удаляются.When a database is detached, all its metadata is dropped. Если база данных была базой данных по умолчанию для любых учетных записей входа, база данных master станет базой по умолчанию.If the database was the default database of any login accounts, master becomes their default database.

Примечание

Сведения о том, как просмотреть базу данных по умолчанию для всех учетных записей входа, см. в разделе sp_helplogins (Transact-SQL).For information about how to view the default database of all the login accounts, see sp_helplogins (Transact-SQL). При наличии необходимых разрешений можно использовать инструкцию ALTER LOGIN , чтобы назначить имя входа новой базе данных по умолчанию.If you have the required permissions, you can use ALTER LOGIN to assign a new default database to a login.

ОграниченияRestrictions

Невозможно отсоединить базу данных, если выполняется одно из следующих условий:A database cannot be detached if any of the following are true:

  • База данных в настоящий момент используется.The database is currently in use. Дополнительные сведения см. ниже в разделе «Получение монопольного доступа».For more information, see "Obtaining Exclusive Access," later in this topic.

  • При репликации база данных публикуется.If replicated, the database is published.

    Прежде чем можно будет отсоединить базу данных, необходимо отключить публикацию, выполнив sp_replicationdboption.Before you can detach the database, you must disable publishing by running sp_replicationdboption.

    Примечание

    Если невозможно использовать процедуру sp_replicationdboption, можно удалить репликацию, выполнив процедуру sp_removedbreplication.If you cannot use sp_replicationdboption, you can remove replication by running sp_removedbreplication.

  • Имеется моментальный снимок базы данных.A database snapshot exists on the database.

    Перед отсоединением базы данных необходимо удалить все моментальные снимки.Before you can detach the database, you must drop all of its snapshots. Дополнительные сведения см. в разделе Удаление моментального снимка базы данных (Transact-SQL).For more information, see Drop a Database Snapshot (Transact-SQL).

    Примечание

    Невозможно отсоединить или присоединить моментальный снимок базы данных.A database snapshot cannot be detached or attached.

  • Выполняется зеркальное отображение базы данных.The database is being mirrored.

    Отключить базу данных невозможно, пока этот процесс не завершится.The database cannot be detached until the database mirroring session is terminated. Дополнительные сведения см. в разделе Удаление зеркального отображения базы данных (SQL Server).For more information, see Removing Database Mirroring (SQL Server).

  • База данных помечена как подозрительная.The database is suspect.

    Подозрительную базу данных необходимо перевести в аварийный режим перед ее отсоединением.You must put a suspect database into emergency mode before you can detach the database. Дополнительные сведения о переводе базы данных в аварийный режим см. в разделе ALTER DATABASE (Transact-SQL).For more information about how to put a database into emergency mode, see ALTER DATABASE (Transact-SQL).

  • База данных является системной базой данных.The database is a system database.

Получение монопольного доступаObtaining Exclusive Access

Для отсоединения базы данных требуется монопольный доступ к ней.Detaching a database requires exclusive access to the database. Если база данных, которую необходимо отключить, используется в настоящий момент, следует переключить ее в режим SINGLE_USER для получения монопольного доступа.If the database that you want to detach is in use, before you can detach it, set the database to SINGLE_USER mode to obtain exclusive access.

Перед заданием параметра SINGLE_USER проверьте, чтобы параметру AUTO_UPDATE_STATISTICS_ASYNC было присвоено значение OFF.Before you set the database to SINGLE_USER, verify that the AUTO_UPDATE_STATISTICS_ASYNC option is set to OFF. Если этот параметр имеет значение ON, то фоновый поток, используемый для обновления статистики, соединится с базой данных и доступ к базе данных в однопользовательском режиме будет невозможен.When this option is set to ON, the background thread that is used to update statistics takes a connection against the database, and you will be unable to access the database in single-user mode. Дополнительные сведения см. в разделе Установка однопользовательского режима базы данных.For more information, see set a database to single user mode.

Например, следующая ALTER DATABASE инструкция получает монопольный доступ к AdventureWorks2012AdventureWorks2012 базе данных после отключения всех текущих пользователей от базы данных.For example, the following ALTER DATABASE statement obtains exclusive access to the AdventureWorks2012AdventureWorks2012 database after all current users disconnect from the database.

USE master;  
ALTER DATABASE AdventureWorks2012  
SET SINGLE_USER;  
GO  

Примечание

Для принудительной установки текущих пользователей из базы данных немедленно или в течение заданного количества секунд также используйте параметр ROLLBACK: ALTER DATABASE database_name Set SINGLE_USER WITH ROLLBACK rollback_option.To force current users out of the database immediately or within a specified number of seconds, also use the ROLLBACK option: ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK rollback_option. Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE (Transact-SQL).

Повторное присоединение базы данныхReattaching a Database

Отсоединенные файлы останутся на диске и могут быть повторно подсоединены с помощью вызова CREATE DATABASE (с параметрами FOR ATTACH или FOR ATTACH_REBUILD_LOG).The detached files remain and can be reattached by using CREATE DATABASE (with the FOR ATTACH or FOR ATTACH_REBUILD_LOG option). Файлы можно также переместить на другой сервер и подсоединить там.The files can be moved to another server and attached there.

РазрешенияPermissions

Требуется членство в предопределенной роли сервера sysadmin или членство в роли db_owner базы данных.Requires membership in the sysadmin fixed server role or membership in the db_owner role of the database.

ПримерыExamples

В следующем примере база данных отсоединяется AdventureWorks2012AdventureWorks2012 с параметром параметром skipchecks установленным , для которого задано значение true.The following example detaches the AdventureWorks2012AdventureWorks2012 database with skipchecks set to true.

EXEC sp_detach_db 'AdventureWorks2012', 'true';  

В следующем примере отсоединяется база данных AdventureWorks2012AdventureWorks2012 и сохраняются файлы полнотекстового индекса и метаданные полнотекстового индекса.The following example detaches the AdventureWorks2012AdventureWorks2012 database and keeps the full-text index files and the metadata of the full-text index. Эта команда выполняет инструкцию UPDATE STATISTICS — такое поведение установлено по умолчанию.This command runs UPDATE STATISTICS, which is the default behavior.

exec sp_detach_db @dbname='AdventureWorks2012'  
    , @keepfulltextindexfile='true';  

См. также:See Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Присоединение и отсоединение базы данных (SQL Server) Database Detach and Attach (SQL Server)
CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Отсоединение базы данныхDetach a Database