sp_attach_db (Transact-SQL)sp_attach_db (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Присоединение базы данных к серверу.Attaches a database to a server.

Важно!

Этот компонент находится в режиме обслуживания и может быть удален в будущей версии Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. вместо этого рекомендуется использовать CREATE DATABASE имя_базы_данных для Attach.We recommend that you use CREATE DATABASE database_name FOR ATTACH instead. Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Примечание

Чтобы перестроить несколько файлов журнала, если одно или несколько из них имеют новое расположение, используйте CREATE DATABASE имя_базы_данных FOR ATTACH_REBUILD_LOG.To rebuild multiple log files when one or more have a new location, use CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

Важно!

Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников.We recommend that you do not attach or restore databases from unknown or untrusted sources. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQLTransact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

СинтаксисSyntax

  
sp_attach_db [ @dbname= ] 'dbname'  
    , [ @filename1= ] 'filename_n' [ ,...16 ]   

АргументыArguments

[ @dbname = ] 'dbnam_ ' — имя базы данных, которая должна быть присоединена к серверу.[ @dbname = ] 'dbnam_ ' Is the name of the database to be attached to the server. Имя должно быть уникальным.The name must be unique. Аргумент dbname имеет тип sysnameи значение по умолчанию NULL.dbname is sysname, with a default of NULL.

[ @filename1 = ] 'filename_n' — физическое имя файла базы данных, включая путь.[ @filename1 = ] 'filename_n' Is the physical name, including path, of a database file. filename_n имеет тип nvarchar (260) и значение по умолчанию NULL.filename_n is nvarchar(260), with a default of NULL. Можно указать до 16 имен файлов.Up to 16 file names can be specified. Имена параметров начинаются с @filename1 и увеличиваются в @filename16.The parameter names start at @filename1 and increment to @filename16. Список имен файлов должен включать хотя бы первичный файл.The file name list must include at least the primary file. Первичный файл содержит системные таблицы, указывающие на другие файлы базы данных.The primary file contains the system tables that point to other files in the database. Список также должен включать все файлы, перемещенные после отключения базы данных.The list must also include any files that were moved after the database was detached.

Примечание

Этот аргумент сопоставляется с параметром FILENAME инструкции CREATE DATABASE.This argument maps to the FILENAME parameter of the CREATE DATABASE statement. Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Когда базу данных SQL Server 2005 (9.x)SQL Server 2005 (9.x) с файлами полнотекстовых каталогов присоединяют к экземпляру сервера SQL ServerSQL Server , то присоединение файлов каталогов выполняется из их предыдущего расположения вместе с другими файлами баз данных, как и в SQL Server 2005 (9.x)SQL Server 2005 (9.x).When you attach a SQL Server 2005 (9.x)SQL Server 2005 (9.x) database that contains full-text catalog files onto a SQL ServerSQL Server server instance, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005 (9.x)SQL Server 2005 (9.x). Дополнительные сведения см. в разделе Обновление полнотекстового поиска.For more information, see Upgrade Full-Text Search.

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

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

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

NoneNone

ПримечанияRemarks

Хранимая процедура sp_attach_db должна выполняться только для баз данных, которые ранее были отключены от сервера базы данных с помощью явной операции sp_detach_db или скопированных баз данных.The sp_attach_db stored procedure should only be executed on databases that were previously detached from the database server by using an explicit sp_detach_db operation or on copied databases. Если необходимо указать более 16 файлов, используйте CREATE DATABASE имя_базы_данных для Attach или CREATE DATABASE имя_базы_данных FOR_ATTACH_REBUILD_LOG.If you have to specify more than 16 files, use CREATE DATABASE database_name FOR ATTACH or CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Дополнительные сведения см. в разделе CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Предполагается, что любые неуказанные файлы находятся в своем последнем известном расположении.Any unspecified file is assumed to be in its last known location. Чтобы использовать файл, расположенный в другом месте, необходимо указать его новое расположение.To use a file in a different location, you must specify the new location.

База данных, созданная в более поздней версии SQL ServerSQL Server, не может быть присоединена в ранних версиях.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions.

Примечание

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

При подключении реплицируемой базы данных, которая была скопирована, а не отсоединена, необходимо учитывать следующее.When you attach a replicated database that was copied instead of being detached, consider the following:

  • При подключении базы данных к тому же экземпляру и версии сервера, к которому была подключена оригинальная база данных, не требуется никаких дополнительных действий.If you attach the database to the same server instance and version as the original database, no additional steps are required.

  • При подключении базы данных к обновленной версии того же экземпляра сервера необходимо запустить процедуру sp_vupgrade_replication для обновления репликации по завершении операции подключения.If you attach the database to the same server instance but with an upgraded version, you must execute sp_vupgrade_replication to upgrade replication after the attach operation is complete.

  • При подключении базы данных к другому экземпляру сервера, независимо от его версии, необходимо запустить процедуру sp_removedbreplication для удаления репликации по завершении операции подключения.If you attach the database to a different server instance, regardless of version, you must execute sp_removedbreplication to remove replication after the attach operation is complete.

При первом присоединении базы данных к новому экземпляру SQL ServerSQL Server или ее восстановлении копия главного ключа базы данных (зашифрованная главным ключом службы) еще не хранится на сервере.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. Необходимо расшифровать главный ключ базы данных с помощью инструкции OPEN MASTER KEY.You must use the OPEN MASTER KEY statement to decrypt the database master key (DMK). Как только главный ключ базы данных будет расшифрован, появится возможность разрешить автоматическую расшифровку в будущем с помощью инструкции ALTER MASTER KEY REGENERATE, чтобы оставить на сервере копию главного ключа базы данных, зашифрованного с помощью главного ключа службы.Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). После обновления базы данных с переходом от более ранней версии главный ключ базы данных должен быть создан повторно для использования нового алгоритма шифрования AES.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. Дополнительные сведения о повторном создании главного ключа базы данных см. в статье ALTER MASTER KEY (Transact-SQL).For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). Время, необходимое для повторного создания главного ключа базы данных с обновлением до алгоритма шифрования AES, зависит от числа объектов, защищаемых главным ключом базы данных.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. Повторное создание главного ключа базы данных с обновлением до алгоритма шифрования AES необходимо произвести только один раз. Это никак не повлияет на последующие операции повторного создания, выполняемые в соответствии со стратегией смены ключей.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy.

РазрешенияPermissions

Сведения о том, как обрабатываются разрешения при присоединении базы данных, см. в разделе (Create)Database SQL Server Transact-SQL.For information about how permissions are handled when a database is attached, see CREATE DATABASE (SQL Server Transact-SQL).

ПримерыExamples

В данном примере происходит подключение файлов из базы данных AdventureWorks2012AdventureWorks2012 к текущему серверу.The following example attaches files from AdventureWorks2012AdventureWorks2012 to the current server.

EXEC sp_attach_db @dbname = N'AdventureWorks2012',   
    @filename1 =   
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf',   
    @filename2 =   
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';  

См. такжеSee Also

Присоединение и отсоединение базы данных (SQL Server) Database Detach and Attach (SQL Server)
sp_detach_db (Transact-SQL) sp_detach_db (Transact-SQL)
sp_helpfile (Transact-SQL) sp_helpfile (Transact-SQL)
sp_removedbreplication (Transact-SQL) sp_removedbreplication (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)System Stored Procedures (Transact-SQL)