sp_attach_single_file_db (Transact-SQL)
Applies to: SQL Server
Attaches a database that's only one data file to the current server. sp_attach_single_file_db
can't be used with multiple data files.
Important
This feature will be removed in a future version of SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. We recommend that you use CREATE DATABASE <database_name> FOR ATTACH
instead. For more information, see CREATE DATABASE. Don't use this procedure on a replicated database.
Don't attach or restore databases from unknown or untrusted sources. Such databases could contain malicious code that might execute unintended Transact-SQL code or cause errors by modifying the schema or the physical database structure. 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.
Transact-SQL syntax conventions
Syntax
sp_attach_single_file_db
[ @dbname = ] N'dbname'
, [ @physname = ] N'physname'
[ ; ]
Arguments
[ @dbname = ] N'dbname'
The name of the database to be attached to the server. @dbname is sysname, with no default.
[ @physname = ] N'physname'
The physical name, including path, of the database file. @physname is nvarchar(260), with no default.
This argument maps to the FILENAME
parameter of the CREATE DATABASE
statement. For more information, see CREATE DATABASE.
Note
When you attach a SQL Server 2005 (9.x) database that contains full-text catalog files onto a newer server instance of SQL Server, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005 (9.x). For more information, see Upgrade Full-Text Search.
Return code values
0
(success) or 1
(failure).
Result set
None.
Remarks
Use sp_attach_single_file_db
only on databases that were previously detached from the server by using an explicit sp_detach_db
operation or on copied databases.
sp_attach_single_file_db
works only on databases that have a single log file. When sp_attach_single_file_db
attaches the database to the server, it builds a new log file. If the database is read-only, the log file is built in its previous location.
Note
A database snapshot can't be detached or attached.
Don't use this procedure on a replicated database.
Permissions
For information about how permissions are handled when a database is attached, see CREATE DATABASE.
Examples
The following example detaches AdventureWorks2022
and then attaches one file from AdventureWorks2022
to the current server.
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';