sp_attach_single_file_db (Transact-SQL)

适用于:SQL Server

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

重要

后续版本的 Microsoft SQL Server 将删除该功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 建议改用 CREATE DATABA标准版 DATABASE_NAME FOR ATTACH。 有关详细信息,请参阅 CREATE DATABASE (SQL Server Transact-SQL)。 不要针对复制数据库使用此过程。

重要

不建议附加或还原来自未知或不受信任的源的数据库。 此类数据库可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构或物理数据库结构导致错误。 使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB ,然后检查数据库中的代码,例如存储过程或其他用户定义代码。

Transact-SQL 语法约定

语法

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

参数

[ @dbname = ] 'dbname' 要附加到服务器的数据库的名称。 名称必须唯一。 dbnamesysname,默认值为 NULL。

[ @physname = ] 'physical_name' 数据库文件的物理名称(包括路径)。 physical_name为 nvarchar(260),默认值为 NULL。

注意

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

将包含全文目录文件的 SQL Server 2005 (9.x) 数据库附加到 SQL Server 较新的服务器实例时,目录文件将与其他数据库文件一起附加到其以前的位置,与 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 DATABA标准版 (SQL Server Transact-SQL)。

示例

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

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

另请参阅

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