Open up SQL Query Analyser on the machine that has the database you wish to copy to get this going.  Put in the command below filling in the blanks:

BACKUP DATABASE <database_name>
TO DISK = 'c:\<path_to_save_it>\<backup_name>.BAK'

Copy this file to the machine you want the database to be on.  Open up another SQL Query Analyser on the machine you're on.  You'll need to get the logical names of the database and it's log file.  To do this run:

RESTORE FILELISTONLY
FROM DISK = 'c:\<path_to_save_it>\<backup_name>.BAK'

on the newly copied file.  Use this information in the next step.  You'll need to replace <logical_data_file_name> and <logical_log_file_name> with the correct values given by the previous query.  The path to the new MDF and LDF files could also be different so check those out.

RESTORE DATABASE <new_database_name>
FROM DISK = 'c:\<path_to_save_it>\<backup_name>.BAK'
WITH MOVE '<logical_data_file_name>' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\<new_database_name>.MDF',
MOVE '<logical_log_file_name>' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\<new_database_name>.LDF'
--,REPLACE --if <new_database_name> already exists

Copying permissions still a work in progress:

Finally, we'll need to setup permissions:

SELECT 'EXEC sp_change_users_login ''UPDATE_ONE'', ''' + su.name + ''', ''' + su.name + ''''
FROM sysusers su
LEFT OUTER JOIN master..syslogins sl ON su.sid = sl.sid
WHERE su.issqluser = 1 AND su.name NOT IN ('guest', 'INFORMATION_SCHEMA')
--AND sl.sid IS NULL

This will generate out records that you can copy and paste into your newly created database to insert the existing roles from the copied one.  You can then also change the owner of the database by using:

EXEC <new_database_name>.dbo.sp_ChangeDbOwner 'newOwnerName'

Sources: http://www.experts-exchange.com/Databases/Microsof..., http://doc.ddart.net/mssql/sql70/sp_ca-cz_4.htm, http://www.devx.com/getHelpOn/10MinuteSolution/165...