How To: Attaching database MDF file without LDF file

Working with MDF files from Book CDs:
—————————————————–
Script:
—————————————————–
sqlcmd -E -o “%CD%\attach.log” -Q “exec master..sp_attach_db ‘ExamplesDB’, [%CD%\ExamplesDB.mdf]” -e

—————————————————–
Error:
—————————————————–
exec master..sp_attach_db ‘ExamplesDB’, [C:\Microsoft Press\SQL Server 2008 Examples\Setup\ExamplesDB.mdf]
File activation failure. The physical file name “C:\Microsoft Press\SQL Server 2008 Examples\Setup\ExamplesDB_log.LDF” may be incorrect.
The log cannot be rebuilt when the primary file is read-only.
Msg 1813, Level 16, State 2, Server SHARP, Line 1
Could not open new database ‘ExamplesDB’. CREATE DATABASE is aborted.

—————————————————–
Solution:
—————————————————–
CHECKDB From Every Angle: EMERGENCY mode repair – the very, very last resort

/*	1. create database with the same name of mdf and ldf
	2. shut down slq server
	3. swap mdf files
*/
ALTER DATABASE ExamplesDB SET Emergency
GO
--DBCC REBUILD_LOG
--GO
ALTER DATABASE ExamplesDB SET SINGLE_USER;
GO
DBCC CHECKDB (ExamplesDB, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE ExamplesDB SET MULTI_USER;
GO

SELECT state_desc FROM sys.databases WHERE name='ExamplesDB';

Leave a Reply