sp_attach_single_file_db (Transact-SQL)

适用于: 是SQL Server(所有支持的版本)

将只有一个数据文件的数据库附加到当前服务器。 sp_attach_single_file_db 不能用于多个数据文件。

重要

后续版本的 Microsoft SQL Server 将删除该功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 建议改为使用 CREATE DATABASE database_name 作为附加。 有关详细信息,请参阅 CREATE DATABASE (SQL Server 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_namenvarchar (260),默认值为 NULL。

备注

此参数映射到 CREATE DATABASE 语句的 FILENAME 参数。 有关详细信息,请参阅 CREATE DATABASE (SQL Server Transact-SQL)

当将包含全文目录文件的 SQL Server 2005 (9.x) 数据库附加到 SQL Server 2019 (15.x) 服务器实例上时,会将目录文件从其以前的位置与其他数据库文件一起附加,这与 SQL Server 2005 (9.x)中的情况相同。 有关详细信息,请参阅 全文搜索升级

返回代码值

0(成功)或 1(失败)

结果集

备注

仅在以前从服务器分离的数据库上,使用显式 sp_detach_db 操作或在复制的数据库上使用 sp_attach_single_file_db

sp_attach_single_file_db 仅适用于具有单个日志文件的数据库。 当 sp_attach_single_file_db 将数据库附加到服务器时,它将生成新的日志文件。 如果该数据库是只读数据库,则会在日志文件的先前位置生成日志文件。

备注

不能分离或附加数据库快照。

不要针对复制数据库使用此过程。

权限

有关附加数据库时如何处理权限的信息,请参阅 CREATE database (SQL Server transact-sql)

示例

以下示例分离 AdventureWorks2012,然后将 AdventureWorks2012 中的一个文件附加到当前服务器。

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

另请参阅

数据库分离和附加 (SQL Server)
sp_detach_db (Transact-sql)
sp_helpfile (Transact-sql)
系统存储过程 (Transact-SQL)