There are many ways of doing this, mine is just one. I find this a quick method when you want an exact copy, and the database can be taken offline for a few moments.

  • First, mark the source db as offline in the management console.
  • Then, in windows explorer, make a copy of the data and log file.
  • Put the source db back online.
  • Rename the copies to your desired new database name.
  • Link them to a new db instance.
EXEC  sp_attach_db @dbname = 'newdb', @filename1 = 'c:\Program  Files\Microsoft SQL Server\MSSQL\Data\newdb_data.mdf', @filename2 =  N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\newdb_log.ldf'
  • However the logical filename will still be the old database (revealed by sp_helpfile). So to rename the logical filename…
USE MASTER
GO

ALTER  DATABASE newdb
MODIFY FILE (NAME = olddb_data,  NEWNAME='newdb_data')
GO

ALTER DATABASE newdb
MODIFY FILE (NAME = olddb_log,  NEWNAME='newdb_log')
GO

And hey presto, your duplicate is ready to go!